1*9880d681SAndroid Build Coastguard Worker// This addresses bug 14456. We were not writing 2*9880d681SAndroid Build Coastguard Worker// out the addend to the gprel16 relocation. The 3*9880d681SAndroid Build Coastguard Worker// addend is stored in the instruction immediate 4*9880d681SAndroid Build Coastguard Worker// field. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -mcpu=mips32r2 -triple=mipsel-pc-linux -filetype=obj %s -o - \ 7*9880d681SAndroid Build Coastguard Worker// RUN: | llvm-objdump -disassemble - | FileCheck %s 8*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -mcpu=mips32r2 -triple=mips-pc-linux -filetype=obj %s -o - \ 9*9880d681SAndroid Build Coastguard Worker// RUN: | llvm-objdump -disassemble - | FileCheck %s 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker .text 12*9880d681SAndroid Build Coastguard Worker .abicalls 13*9880d681SAndroid Build Coastguard Worker .option pic0 14*9880d681SAndroid Build Coastguard Worker .section .mdebug.abi32,"",@progbits 15*9880d681SAndroid Build Coastguard Worker .file "/home/espindola/llvm/llvm/test/MC/Mips/mips_gprel16.ll" 16*9880d681SAndroid Build Coastguard Worker .text 17*9880d681SAndroid Build Coastguard Worker .globl testvar1 18*9880d681SAndroid Build Coastguard Worker .align 2 19*9880d681SAndroid Build Coastguard Worker .type testvar1,@function 20*9880d681SAndroid Build Coastguard Worker .set nomips16 21*9880d681SAndroid Build Coastguard Worker .ent testvar1 22*9880d681SAndroid Build Coastguard Workertestvar1: # @testvar1 23*9880d681SAndroid Build Coastguard Worker .frame $sp,0,$ra 24*9880d681SAndroid Build Coastguard Worker .mask 0x00000000,0 25*9880d681SAndroid Build Coastguard Worker .fmask 0x00000000,0 26*9880d681SAndroid Build Coastguard Worker .set noreorder 27*9880d681SAndroid Build Coastguard Worker .set nomacro 28*9880d681SAndroid Build Coastguard Worker .set noat 29*9880d681SAndroid Build Coastguard Worker# BB#0: # %entry 30*9880d681SAndroid Build Coastguard Worker// CHECK: lw ${{[0-9]+}}, 0($gp) 31*9880d681SAndroid Build Coastguard Worker lw $1, %gp_rel(var1)($gp) 32*9880d681SAndroid Build Coastguard Worker jr $ra 33*9880d681SAndroid Build Coastguard Worker sltu $2, $zero, $1 34*9880d681SAndroid Build Coastguard Worker .set at 35*9880d681SAndroid Build Coastguard Worker .set macro 36*9880d681SAndroid Build Coastguard Worker .set reorder 37*9880d681SAndroid Build Coastguard Worker .end testvar1 38*9880d681SAndroid Build Coastguard Worker$tmp0: 39*9880d681SAndroid Build Coastguard Worker .size testvar1, ($tmp0)-testvar1 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker .globl testvar2 42*9880d681SAndroid Build Coastguard Worker .align 2 43*9880d681SAndroid Build Coastguard Worker .type testvar2,@function 44*9880d681SAndroid Build Coastguard Worker .set nomips16 45*9880d681SAndroid Build Coastguard Worker .ent testvar2 46*9880d681SAndroid Build Coastguard Workertestvar2: # @testvar2 47*9880d681SAndroid Build Coastguard Worker .frame $sp,0,$ra 48*9880d681SAndroid Build Coastguard Worker .mask 0x00000000,0 49*9880d681SAndroid Build Coastguard Worker .fmask 0x00000000,0 50*9880d681SAndroid Build Coastguard Worker .set noreorder 51*9880d681SAndroid Build Coastguard Worker .set nomacro 52*9880d681SAndroid Build Coastguard Worker .set noat 53*9880d681SAndroid Build Coastguard Worker# BB#0: # %entry 54*9880d681SAndroid Build Coastguard Worker// CHECK: lw ${{[0-9]+}}, 4($gp) 55*9880d681SAndroid Build Coastguard Worker lw $1, %gp_rel(var2)($gp) 56*9880d681SAndroid Build Coastguard Worker jr $ra 57*9880d681SAndroid Build Coastguard Worker sltu $2, $zero, $1 58*9880d681SAndroid Build Coastguard Worker .set at 59*9880d681SAndroid Build Coastguard Worker .set macro 60*9880d681SAndroid Build Coastguard Worker .set reorder 61*9880d681SAndroid Build Coastguard Worker .end testvar2 62*9880d681SAndroid Build Coastguard Worker$tmp1: 63*9880d681SAndroid Build Coastguard Worker .size testvar2, ($tmp1)-testvar2 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker .type var1,@object # @var1 66*9880d681SAndroid Build Coastguard Worker .local var1 67*9880d681SAndroid Build Coastguard Worker .comm var1,4,4 68*9880d681SAndroid Build Coastguard Worker .type var2,@object # @var2 69*9880d681SAndroid Build Coastguard Worker .local var2 70*9880d681SAndroid Build Coastguard Worker .comm var2,4,4 71*9880d681SAndroid Build Coastguard Worker 72