[NFC][Py Reformat] Reformat python files in llvm
[llvm-project.git] / llvm / test / CodeGen / Mips / GlobalISel / llvm-ir / global_address_pic.ll
blob19fe8b521b89b1ef3f6b5877792c24d2c5f05df9
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc  -O0 -mtriple=mipsel-linux-gnu -global-isel -relocation-model=pic -verify-machineinstrs %s -o -| FileCheck %s -check-prefixes=MIPS32_PIC
4 declare i32 @f(i32 %a, i32 %b);
6 define internal i32 @f_with_local_linkage(i32 %x, i32 %y) {
7 ; MIPS32_PIC-LABEL: f_with_local_linkage:
8 ; MIPS32_PIC:       # %bb.0: # %entry
9 ; MIPS32_PIC-NEXT:    addu $2, $5, $4
10 ; MIPS32_PIC-NEXT:    jr $ra
11 ; MIPS32_PIC-NEXT:    nop
12 entry:
13   %add = add i32 %y, %x
14   ret i32 %add
17 define i32 @call_global(i32 %a, i32 %b) {
18 ; MIPS32_PIC-LABEL: call_global:
19 ; MIPS32_PIC:       # %bb.0: # %entry
20 ; 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, -24
23 ; MIPS32_PIC-NEXT:    .cfi_def_cfa_offset 24
24 ; MIPS32_PIC-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill
25 ; MIPS32_PIC-NEXT:    .cfi_offset 31, -4
26 ; MIPS32_PIC-NEXT:    addu $gp, $2, $25
27 ; MIPS32_PIC-NEXT:    lw $25, %call16(f)($gp)
28 ; MIPS32_PIC-NEXT:    jalr $25
29 ; MIPS32_PIC-NEXT:    nop
30 ; MIPS32_PIC-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload
31 ; MIPS32_PIC-NEXT:    addiu $sp, $sp, 24
32 ; MIPS32_PIC-NEXT:    jr $ra
33 ; MIPS32_PIC-NEXT:    nop
34 entry:
35   %call = call i32 @f(i32 %a, i32 %b)
36   ret i32 %call
39 define i32 @call_global_with_local_linkage(i32 %a, i32 %b) {
40 ; MIPS32_PIC-LABEL: call_global_with_local_linkage:
41 ; MIPS32_PIC:       # %bb.0: # %entry
42 ; 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, -24
45 ; MIPS32_PIC-NEXT:    .cfi_def_cfa_offset 24
46 ; MIPS32_PIC-NEXT:    sw $ra, 20($sp) # 4-byte Folded Spill
47 ; MIPS32_PIC-NEXT:    .cfi_offset 31, -4
48 ; MIPS32_PIC-NEXT:    addu $gp, $2, $25
49 ; 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 $25
52 ; MIPS32_PIC-NEXT:    nop
53 ; MIPS32_PIC-NEXT:    lw $ra, 20($sp) # 4-byte Folded Reload
54 ; MIPS32_PIC-NEXT:    addiu $sp, $sp, 24
55 ; MIPS32_PIC-NEXT:    jr $ra
56 ; MIPS32_PIC-NEXT:    nop
57 entry:
58   %call = call i32 @f_with_local_linkage(i32 %a, i32 %b)
59   ret i32 %call
63 @val = global i32 0
64 @val_with_local_linkage = internal global i32 1
66 define i32 @ret_global_int() {
67 ; MIPS32_PIC-LABEL: ret_global_int:
68 ; MIPS32_PIC:       # %bb.0: # %entry
69 ; 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, $25
72 ; MIPS32_PIC-NEXT:    lw $1, %got(val)($1)
73 ; MIPS32_PIC-NEXT:    lw $2, 0($1)
74 ; MIPS32_PIC-NEXT:    jr $ra
75 ; MIPS32_PIC-NEXT:    nop
76 entry:
77   %0 = load i32, ptr @val
78   ret i32 %0
81 define i32 @ret_global_int_with_local_linkage() {
82 ; MIPS32_PIC-LABEL: ret_global_int_with_local_linkage:
83 ; MIPS32_PIC:       # %bb.0: # %entry
84 ; 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, $25
87 ; 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 $ra
91 ; MIPS32_PIC-NEXT:    nop
92 entry:
93   %0 = load i32, ptr @val_with_local_linkage
94   ret i32 %0