xref: /aosp_15_r20/external/llvm/test/MC/Mips/xgot.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// For the xgot case we want to see R_MIPS_[GOT|CALL]_[HI|LO]16.
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker// CHECK: Relocations [
7*9880d681SAndroid Build Coastguard Worker// CHECK:   0x0 R_MIPS_HI16 _gp_disp
8*9880d681SAndroid Build Coastguard Worker// CHECK:   0x4 R_MIPS_LO16 _gp_disp
9*9880d681SAndroid Build Coastguard Worker// CHECK:   0x14 R_MIPS_GOT_HI16 ext_1
10*9880d681SAndroid Build Coastguard Worker// CHECK:   0x1C R_MIPS_GOT_LO16 ext_1
11*9880d681SAndroid Build Coastguard Worker// CHECK:   0x24 R_MIPS_CALL_HI16 printf
12*9880d681SAndroid Build Coastguard Worker// CHECK:   0x30 R_MIPS_CALL_LO16 printf
13*9880d681SAndroid Build Coastguard Worker// CHECK:   0x2C R_MIPS_GOT16 $.str
14*9880d681SAndroid Build Coastguard Worker// CHECK:   0x38 R_MIPS_LO16 $.str
15*9880d681SAndroid Build Coastguard Worker// CHECK: ]
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker	.text
18*9880d681SAndroid Build Coastguard Worker	.abicalls
19*9880d681SAndroid Build Coastguard Worker	.section	.mdebug.abi32,"",@progbits
20*9880d681SAndroid Build Coastguard Worker	.file	"/home/espindola/llvm/llvm/test/MC/Mips/xgot.ll"
21*9880d681SAndroid Build Coastguard Worker	.text
22*9880d681SAndroid Build Coastguard Worker	.globl	fill
23*9880d681SAndroid Build Coastguard Worker	.align	2
24*9880d681SAndroid Build Coastguard Worker	.type	fill,@function
25*9880d681SAndroid Build Coastguard Worker	.set	nomips16
26*9880d681SAndroid Build Coastguard Worker	.ent	fill
27*9880d681SAndroid Build Coastguard Workerfill:                                   # @fill
28*9880d681SAndroid Build Coastguard Worker	.frame	$sp,24,$ra
29*9880d681SAndroid Build Coastguard Worker	.mask 	0x80000000,-4
30*9880d681SAndroid Build Coastguard Worker	.fmask	0x00000000,0
31*9880d681SAndroid Build Coastguard Worker	.set	noreorder
32*9880d681SAndroid Build Coastguard Worker	.set	nomacro
33*9880d681SAndroid Build Coastguard Worker	.set	noat
34*9880d681SAndroid Build Coastguard Worker# BB#0:                                 # %entry
35*9880d681SAndroid Build Coastguard Worker	lui	$2, %hi(_gp_disp)
36*9880d681SAndroid Build Coastguard Worker	addiu	$2, $2, %lo(_gp_disp)
37*9880d681SAndroid Build Coastguard Worker	addiu	$sp, $sp, -24
38*9880d681SAndroid Build Coastguard Worker	sw	$ra, 20($sp)            # 4-byte Folded Spill
39*9880d681SAndroid Build Coastguard Worker	addu	$gp, $2, $25
40*9880d681SAndroid Build Coastguard Worker	lui	$1, %got_hi(ext_1)
41*9880d681SAndroid Build Coastguard Worker	addu	$1, $1, $gp
42*9880d681SAndroid Build Coastguard Worker	lw	$1, %got_lo(ext_1)($1)
43*9880d681SAndroid Build Coastguard Worker	lw	$5, 0($1)
44*9880d681SAndroid Build Coastguard Worker	lui	$1, %call_hi(printf)
45*9880d681SAndroid Build Coastguard Worker	addu	$1, $1, $gp
46*9880d681SAndroid Build Coastguard Worker	lw	$2, %got($.str)($gp)
47*9880d681SAndroid Build Coastguard Worker	lw	$25, %call_lo(printf)($1)
48*9880d681SAndroid Build Coastguard Worker	jalr	$25
49*9880d681SAndroid Build Coastguard Worker	addiu	$4, $2, %lo($.str)
50*9880d681SAndroid Build Coastguard Worker	lw	$ra, 20($sp)            # 4-byte Folded Reload
51*9880d681SAndroid Build Coastguard Worker	jr	$ra
52*9880d681SAndroid Build Coastguard Worker	addiu	$sp, $sp, 24
53*9880d681SAndroid Build Coastguard Worker	.set	at
54*9880d681SAndroid Build Coastguard Worker	.set	macro
55*9880d681SAndroid Build Coastguard Worker	.set	reorder
56*9880d681SAndroid Build Coastguard Worker	.end	fill
57*9880d681SAndroid Build Coastguard Worker$tmp0:
58*9880d681SAndroid Build Coastguard Worker	.size	fill, ($tmp0)-fill
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Worker	.type	$.str,@object           # @.str
61*9880d681SAndroid Build Coastguard Worker	.section	.rodata.str1.1,"aMS",@progbits,1
62*9880d681SAndroid Build Coastguard Worker$.str:
63*9880d681SAndroid Build Coastguard Worker	.asciz	"ext_1=%d, i=%d\n"
64*9880d681SAndroid Build Coastguard Worker	.size	$.str, 16
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard Worker	.text
68