// RUN: llvm-mc -filetype=obj -triple=mips64el-pc-linux -mcpu=mips64 %s -o - \
// RUN: | llvm-readobj -r - \
// RUN: | FileCheck %s
// RUN: llvm-mc -filetype=obj -triple=mips64-pc-linux -mcpu=mips64 %s -o - \
// RUN: | llvm-readobj -r - \
// RUN: | FileCheck %s

// Check that the appropriate relocations were created.

// R_MIPS_GPREL32/R_MIPS_64/R_MIPS_NONE
// CHECK:      Relocations [
// CHECK:        Section ({{[a-z0-9]+}}) .rela.rodata {
// CHECK-NEXT:     0x{{[0-9,A-F]+}} R_MIPS_GPREL32/R_MIPS_64/R_MIPS_NONE
// CHECK-NEXT:     0x{{[0-9,A-F]+}} R_MIPS_GPREL32/R_MIPS_64/R_MIPS_NONE
// CHECK-NEXT:     0x{{[0-9,A-F]+}} R_MIPS_GPREL32/R_MIPS_64/R_MIPS_NONE
// CHECK-NEXT:     0x{{[0-9,A-F]+}} R_MIPS_GPREL32/R_MIPS_64/R_MIPS_NONE
// CHECK-NEXT:   }
// CHECK-NEXT: ]

	.text
	.abicalls
	.section	.mdebug.abi64,"",@progbits
	.file	"/home/espindola/llvm/llvm/test/MC/Mips/elf-gprel-32-64.ll"
	.text
	.globl	test
	.align	3
	.type	test,@function
	.set	nomips16
	.ent	test
test:                                   # @test
	.frame	$sp,0,$ra
	.mask 	0x00000000,0
	.fmask	0x00000000,0
	.set	noreorder
	.set	nomacro
	.set	noat
# %bb.0:                                # %entry
	lui	$1, %hi(%neg(%gp_rel(test)))
	daddu	$2, $1, $25
	sltiu	$1, $4, 4
	dsll	$3, $4, 32
	bnez	$1, $BB0_2
	nop
$BB0_1:                                 # %sw.default
	b	$BB0_3
	addiu	$2, $zero, -1
$BB0_2:                                 # %entry
	daddiu	$1, $2, %lo(%neg(%gp_rel(test)))
	dsrl	$3, $3, 32
	daddiu	$4, $zero, 8
	dmult	$3, $4
	mflo	$3
	ld	$4, %got_page($JTI0_0)($1)
	daddu	$3, $3, $4
	ld	$3, %got_ofst($JTI0_0)($3)
	daddu	$1, $3, $1
	jr	$1
	addiu	$2, $zero, 1
$BB0_3:                                 # %return
	jr	$ra
	nop
$BB0_4:                                 # %sw.bb2
	jr	$ra
	addiu	$2, $zero, 3
$BB0_5:                                 # %sw.bb5
	jr	$ra
	addiu	$2, $zero, 2
$BB0_6:                                 # %sw.bb8
	jr	$ra
	addiu	$2, $zero, 7
	.set	at
	.set	macro
	.set	reorder
	.end	test
$tmp0:
	.size	test, ($tmp0)-test
	.section	.rodata,"a",@progbits
	.align	3
$JTI0_0:
	.gpdword	($BB0_3)
	.gpdword	($BB0_4)
	.gpdword	($BB0_5)
	.gpdword	($BB0_6)


	.text
