136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux %s -o - | llvm-readobj -r | FileCheck %s
236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// Check that the appropriate relocations were created.
436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK: Relocations [
636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK:   Section (2) .rel.text {
736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK:     R_MIPS_TLS_LDM
836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK:     R_MIPS_TLS_DTPREL_HI16
936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK:     R_MIPS_TLS_DTPREL_LO16
1036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK:   }
1136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// CHECK: ]
1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.text
1436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.abicalls
1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.section	.mdebug.abi32,"",@progbits
1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.file	"/home/espindola/llvm/llvm/test/MC/Mips/elf-tls.ll"
1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.text
1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.globl	f1
1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.align	2
2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.type	f1,@function
2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	nomips16
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.ent	f1
2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesf1:                                     # @f1
2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.frame	$sp,24,$ra
2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.mask 	0x80000000,-4
2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.fmask	0x00000000,0
2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	noreorder
2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	nomacro
2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	noat
3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# BB#0:                                 # %entry
3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lui	$2, %hi(_gp_disp)
3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$2, $2, %lo(_gp_disp)
3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$sp, $sp, -24
3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	sw	$ra, 20($sp)            # 4-byte Folded Spill
3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addu	$gp, $2, $25
3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lw	$25, %call16(__tls_get_addr)($gp)
3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	jalr	$25
3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$4, $gp, %tlsgd(t1)
3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lw	$2, 0($2)
4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lw	$ra, 20($sp)            # 4-byte Folded Reload
4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	jr	$ra
4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$sp, $sp, 24
4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	at
4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	macro
4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	reorder
4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.end	f1
4736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines$tmp0:
4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.size	f1, ($tmp0)-f1
4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
5036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.globl	f2
5136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.align	2
5236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.type	f2,@function
5336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	nomips16
5436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.ent	f2
5536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesf2:                                     # @f2
5636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.frame	$sp,24,$ra
5736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.mask 	0x80000000,-4
5836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.fmask	0x00000000,0
5936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	noreorder
6036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	nomacro
6136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	noat
6236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# BB#0:                                 # %entry
6336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lui	$2, %hi(_gp_disp)
6436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$2, $2, %lo(_gp_disp)
6536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$sp, $sp, -24
6636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	sw	$ra, 20($sp)            # 4-byte Folded Spill
6736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addu	$gp, $2, $25
6836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lw	$25, %call16(__tls_get_addr)($gp)
6936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	jalr	$25
7036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$4, $gp, %tlsgd(t2)
7136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lw	$2, 0($2)
7236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lw	$ra, 20($sp)            # 4-byte Folded Reload
7336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	jr	$ra
7436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$sp, $sp, 24
7536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	at
7636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	macro
7736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	reorder
7836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.end	f2
7936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines$tmp1:
8036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.size	f2, ($tmp1)-f2
8136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
8236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.globl	f3
8336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.align	2
8436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.type	f3,@function
8536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	nomips16
8636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.ent	f3
8736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesf3:                                     # @f3
8836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.frame	$sp,24,$ra
8936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.mask 	0x80000000,-4
9036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.fmask	0x00000000,0
9136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	noreorder
9236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	nomacro
9336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	noat
9436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines# BB#0:                                 # %entry
9536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lui	$2, %hi(_gp_disp)
9636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$2, $2, %lo(_gp_disp)
9736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$sp, $sp, -24
9836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	sw	$ra, 20($sp)            # 4-byte Folded Spill
9936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addu	$gp, $2, $25
10036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lw	$25, %call16(__tls_get_addr)($gp)
10136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	jalr	$25
10236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$4, $gp, %tlsldm(f3.i)
10336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lui	$1, %dtprel_hi(f3.i)
10436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addu	$1, $1, $2
10536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lw	$2, %dtprel_lo(f3.i)($1)
10636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$2, $2, 1
10736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	sw	$2, %dtprel_lo(f3.i)($1)
10836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	lw	$ra, 20($sp)            # 4-byte Folded Reload
10936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	jr	$ra
11036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	addiu	$sp, $sp, 24
11136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	at
11236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	macro
11336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.set	reorder
11436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.end	f3
11536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines$tmp2:
11636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.size	f3, ($tmp2)-f3
11736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
11836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.type	t1,@object              # @t1
11936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.section	.tbss,"awT",@nobits
12036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.globl	t1
12136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.align	2
12236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinest1:
12336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.4byte	0                       # 0x0
12436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.size	t1, 4
12536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
12636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.type	f3.i,@object            # @f3.i
12736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.section	.tdata,"awT",@progbits
12836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.align	2
12936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesf3.i:
13036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.4byte	1                       # 0x1
13136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.size	f3.i, 4
13236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
13336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
13436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines	.text
135