96 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O0 -mtriple=mipsel-linux-gnu -global-isel -relocation-model=pic -verify-machineinstrs %s -o -| FileCheck %s -check-prefixes=MIPS32_PIC3 4declare i32 @f(i32 %a, i32 %b);5 6define internal i32 @f_with_local_linkage(i32 %x, i32 %y) {7; MIPS32_PIC-LABEL: f_with_local_linkage:8; MIPS32_PIC: # %bb.0: # %entry9; MIPS32_PIC-NEXT: addu $2, $5, $410; MIPS32_PIC-NEXT: jr $ra11; MIPS32_PIC-NEXT: nop12entry:13 %add = add i32 %y, %x14 ret i32 %add15}16 17define i32 @call_global(i32 %a, i32 %b) {18; MIPS32_PIC-LABEL: call_global:19; MIPS32_PIC: # %bb.0: # %entry20; MIPS32_PIC-NEXT: lui $2, %hi(_gp_disp)21; MIPS32_PIC-NEXT: addiu $2, $2, %lo(_gp_disp)22; MIPS32_PIC-NEXT: addiu $sp, $sp, -2423; MIPS32_PIC-NEXT: .cfi_def_cfa_offset 2424; MIPS32_PIC-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill25; MIPS32_PIC-NEXT: .cfi_offset 31, -426; MIPS32_PIC-NEXT: addu $gp, $2, $2527; MIPS32_PIC-NEXT: lw $25, %call16(f)($gp)28; MIPS32_PIC-NEXT: jalr $2529; MIPS32_PIC-NEXT: nop30; MIPS32_PIC-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload31; MIPS32_PIC-NEXT: addiu $sp, $sp, 2432; MIPS32_PIC-NEXT: jr $ra33; MIPS32_PIC-NEXT: nop34entry:35 %call = call i32 @f(i32 %a, i32 %b)36 ret i32 %call37}38 39define i32 @call_global_with_local_linkage(i32 %a, i32 %b) {40; MIPS32_PIC-LABEL: call_global_with_local_linkage:41; MIPS32_PIC: # %bb.0: # %entry42; MIPS32_PIC-NEXT: lui $2, %hi(_gp_disp)43; MIPS32_PIC-NEXT: addiu $2, $2, %lo(_gp_disp)44; MIPS32_PIC-NEXT: addiu $sp, $sp, -2445; MIPS32_PIC-NEXT: .cfi_def_cfa_offset 2446; MIPS32_PIC-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill47; MIPS32_PIC-NEXT: .cfi_offset 31, -448; MIPS32_PIC-NEXT: addu $gp, $2, $2549; MIPS32_PIC-NEXT: lw $1, %got(f_with_local_linkage)($gp)50; MIPS32_PIC-NEXT: addiu $25, $1, %lo(f_with_local_linkage)51; MIPS32_PIC-NEXT: jalr $2552; MIPS32_PIC-NEXT: nop53; MIPS32_PIC-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload54; MIPS32_PIC-NEXT: addiu $sp, $sp, 2455; MIPS32_PIC-NEXT: jr $ra56; MIPS32_PIC-NEXT: nop57entry:58 %call = call i32 @f_with_local_linkage(i32 %a, i32 %b)59 ret i32 %call60}61 62 63@val = global i32 064@val_with_local_linkage = internal global i32 165 66define i32 @ret_global_int() {67; MIPS32_PIC-LABEL: ret_global_int:68; MIPS32_PIC: # %bb.0: # %entry69; MIPS32_PIC-NEXT: lui $2, %hi(_gp_disp)70; MIPS32_PIC-NEXT: addiu $2, $2, %lo(_gp_disp)71; MIPS32_PIC-NEXT: addu $1, $2, $2572; MIPS32_PIC-NEXT: lw $1, %got(val)($1)73; MIPS32_PIC-NEXT: lw $2, 0($1)74; MIPS32_PIC-NEXT: jr $ra75; MIPS32_PIC-NEXT: nop76entry:77 %0 = load i32, ptr @val78 ret i32 %079}80 81define i32 @ret_global_int_with_local_linkage() {82; MIPS32_PIC-LABEL: ret_global_int_with_local_linkage:83; MIPS32_PIC: # %bb.0: # %entry84; MIPS32_PIC-NEXT: lui $2, %hi(_gp_disp)85; MIPS32_PIC-NEXT: addiu $2, $2, %lo(_gp_disp)86; MIPS32_PIC-NEXT: addu $1, $2, $2587; MIPS32_PIC-NEXT: lw $1, %got(val_with_local_linkage)($1)88; MIPS32_PIC-NEXT: addiu $1, $1, %lo(val_with_local_linkage)89; MIPS32_PIC-NEXT: lw $2, 0($1)90; MIPS32_PIC-NEXT: jr $ra91; MIPS32_PIC-NEXT: nop92entry:93 %0 = load i32, ptr @val_with_local_linkage94 ret i32 %095}96