1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple=mips64el-pc-linux -mcpu=mips64 %s -o - | llvm-readobj -r | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple=mips64-pc-linux -mcpu=mips64 %s -o - | llvm-readobj -r | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker// Check for N64 relocation production. 5*9880d681SAndroid Build Coastguard Worker// Check that the appropriate relocations were created. 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker// CHECK: Relocations [ 8*9880d681SAndroid Build Coastguard Worker// CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_HI16 9*9880d681SAndroid Build Coastguard Worker// CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GPREL16/R_MIPS_SUB/R_MIPS_LO16 10*9880d681SAndroid Build Coastguard Worker// CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GOT_PAGE/R_MIPS_NONE/R_MIPS_NONE 11*9880d681SAndroid Build Coastguard Worker// CHECK: 0x{{[0-9,A-F]+}} R_MIPS_GOT_OFST/R_MIPS_NONE/R_MIPS_NONE 12*9880d681SAndroid Build Coastguard Worker// CHECK: ] 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker .text 16*9880d681SAndroid Build Coastguard Worker .abicalls 17*9880d681SAndroid Build Coastguard Worker .section .mdebug.abi64,"",@progbits 18*9880d681SAndroid Build Coastguard Worker .file "/home/espindola/llvm/llvm/test/MC/Mips/elf-N64.ll" 19*9880d681SAndroid Build Coastguard Worker .text 20*9880d681SAndroid Build Coastguard Worker .globl main 21*9880d681SAndroid Build Coastguard Worker .align 3 22*9880d681SAndroid Build Coastguard Worker .type main,@function 23*9880d681SAndroid Build Coastguard Worker .set nomips16 24*9880d681SAndroid Build Coastguard Worker .ent main 25*9880d681SAndroid Build Coastguard Workermain: # @main 26*9880d681SAndroid Build Coastguard Worker .frame $sp,16,$ra 27*9880d681SAndroid Build Coastguard Worker .mask 0x00000000,0 28*9880d681SAndroid Build Coastguard Worker .fmask 0x90000000,-4 29*9880d681SAndroid Build Coastguard Worker .set noreorder 30*9880d681SAndroid Build Coastguard Worker .set nomacro 31*9880d681SAndroid Build Coastguard Worker .set noat 32*9880d681SAndroid Build Coastguard Worker# BB#0: # %entry 33*9880d681SAndroid Build Coastguard Worker daddiu $sp, $sp, -16 34*9880d681SAndroid Build Coastguard Worker sd $ra, 8($sp) # 8-byte Folded Spill 35*9880d681SAndroid Build Coastguard Worker sd $gp, 0($sp) # 8-byte Folded Spill 36*9880d681SAndroid Build Coastguard Worker lui $1, %hi(%neg(%gp_rel(main))) 37*9880d681SAndroid Build Coastguard Worker daddu $1, $1, $25 38*9880d681SAndroid Build Coastguard Worker daddiu $gp, $1, %lo(%neg(%gp_rel(main))) 39*9880d681SAndroid Build Coastguard Worker ld $1, %got_page($str)($gp) 40*9880d681SAndroid Build Coastguard Worker daddiu $4, $1, %got_ofst($str) 41*9880d681SAndroid Build Coastguard Worker ld $25, %call16(puts)($gp) 42*9880d681SAndroid Build Coastguard Worker jalr $25 43*9880d681SAndroid Build Coastguard Worker nop 44*9880d681SAndroid Build Coastguard Worker addiu $2, $zero, 0 45*9880d681SAndroid Build Coastguard Worker ld $gp, 0($sp) # 8-byte Folded Reload 46*9880d681SAndroid Build Coastguard Worker ld $ra, 8($sp) # 8-byte Folded Reload 47*9880d681SAndroid Build Coastguard Worker daddiu $sp, $sp, 16 48*9880d681SAndroid Build Coastguard Worker jr $ra 49*9880d681SAndroid Build Coastguard Worker nop 50*9880d681SAndroid Build Coastguard Worker .set at 51*9880d681SAndroid Build Coastguard Worker .set macro 52*9880d681SAndroid Build Coastguard Worker .set reorder 53*9880d681SAndroid Build Coastguard Worker .end main 54*9880d681SAndroid Build Coastguard Worker$tmp0: 55*9880d681SAndroid Build Coastguard Worker .size main, ($tmp0)-main 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker .type $str,@object # @str 58*9880d681SAndroid Build Coastguard Worker .section .rodata.str1.4,"aMS",@progbits,1 59*9880d681SAndroid Build Coastguard Worker .align 2 60*9880d681SAndroid Build Coastguard Worker$str: 61*9880d681SAndroid Build Coastguard Worker .asciz "hello world" 62*9880d681SAndroid Build Coastguard Worker .size $str, 12 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker .text 66