OSDN Git Service

[MIPS GlobalISel] Select global address
[android-x86/external-llvm.git] / test / CodeGen / Mips / gpopt-explict-section.ll
1 ; RUN: llc < %s -march=mips -mcpu=mips32 -mips-ssection-threshold=8 \
2 ; RUN:     -relocation-model=static -mattr=+noabicalls -mgpopt \
3 ; RUN:   | FileCheck %s
4
5 ; Test that object with an explicit section that is not .sdata or .sbss are not
6 ; considered in the small data section if they would otherwise qualify to be in
7 ; small data section. Also test that explicitly placing something in the small
8 ; data section uses %gp_rel addressing mode.
9
10 @a = global [2 x i32] zeroinitializer, section ".rodata", align 4
11 @b = global [4 x i32] zeroinitializer, section ".sdata", align 4
12 @c = global [4 x i32] zeroinitializer, section ".sbss", align 4
13
14 ; CHECK-LABEL: g
15 ; CHECK:       lui $[[R:[0-9]+]], %hi(a)
16 ; CHECK:       lw  ${{[0-9]+}}, %lo(a)($[[R]])
17
18 define i32 @g() {
19 entry:
20   %0 = load i32, i32* getelementptr inbounds ([2 x i32], [2 x i32]* @a, i32 0, i32 0), align 4
21   ret i32 %0
22 }
23
24 ; CHECK-LABEL: f:
25 ; CHECK-LABEL: lw ${{[0-9]+}}, %gp_rel(b)($gp)
26
27 define i32 @f() {
28 entry:
29   %0 = load i32, i32* getelementptr inbounds ([4 x i32], [4 x i32]* @b, i32 0, i32 0), align 4
30   ret i32 %0
31 }
32
33 ; CHECK-LABEL: h:
34 ; CHECK-LABEL: lw ${{[0-9]+}}, %gp_rel(c)($gp)
35
36 define i32 @h() {
37 entry:
38   %0 = load i32, i32* getelementptr inbounds ([4 x i32], [4 x i32]* @c, i32 0, i32 0), align 4
39   ret i32 %0
40 }
41
42
43 ; CHECK:  .type a,@object
44 ; CHECK:  .section  .rodata,"a",@progbits
45 ; CHECK:  .globl  a
46
47 ; CHECK:  .type b,@object
48 ; CHECK:  .section  .sdata,"aw",@progbits
49 ; CHECK:  .globl  b
50
51 ; CHECK:  .type c,@object
52 ; CHECK:  .section  .sbss,"aw",@nobits
53 ; CHECK:  .globl  c