PPCDAGToDAGISel::PostprocessISelDAG()
[oota-llvm.git] / test / CodeGen / PowerPC / mcm-obj-2.ll
1 ; RUN: llc -O1 -mcpu=pwr7 -code-model=medium -filetype=obj %s -o - | \
2 ; RUN: elf-dump --dump-section-data | FileCheck %s
3
4 ; FIXME: When asm-parse is available, could make this an assembly test.
5
6 target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
7 target triple = "powerpc64-unknown-linux-gnu"
8
9 @test_fn_static.si = internal global i32 0, align 4
10
11 define signext i32 @test_fn_static() nounwind {
12 entry:
13   %0 = load i32* @test_fn_static.si, align 4
14   %inc = add nsw i32 %0, 1
15   store i32 %inc, i32* @test_fn_static.si, align 4
16   ret i32 %0
17 }
18
19 ; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO for
20 ; accessing function-scoped variable si.
21 ;
22 ; CHECK:       Relocation 0
23 ; CHECK-NEXT:  'r_offset'
24 ; CHECK-NEXT:  'r_sym', 0x[[SYM2:[0-9]+]]
25 ; CHECK-NEXT:  'r_type', 0x00000032
26 ; CHECK:       Relocation 1
27 ; CHECK-NEXT:  'r_offset'
28 ; CHECK-NEXT:  'r_sym', 0x[[SYM2]]
29 ; CHECK-NEXT:  'r_type', 0x00000030
30 ; CHECK:       Relocation 2
31 ; CHECK-NEXT:  'r_offset'
32 ; CHECK-NEXT:  'r_sym', 0x[[SYM2]]
33 ; CHECK-NEXT:  'r_type', 0x00000030
34
35 @gi = global i32 5, align 4
36
37 define signext i32 @test_file_static() nounwind {
38 entry:
39   %0 = load i32* @gi, align 4
40   %inc = add nsw i32 %0, 1
41   store i32 %inc, i32* @gi, align 4
42   ret i32 %0
43 }
44
45 ; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO for
46 ; accessing file-scope variable gi.
47 ;
48 ; CHECK:       Relocation 3
49 ; CHECK-NEXT:  'r_offset'
50 ; CHECK-NEXT:  'r_sym', 0x[[SYM3:[0-9]+]]
51 ; CHECK-NEXT:  'r_type', 0x00000032
52 ; CHECK:       Relocation 4
53 ; CHECK-NEXT:  'r_offset'
54 ; CHECK-NEXT:  'r_sym', 0x[[SYM3]]
55 ; CHECK-NEXT:  'r_type', 0x00000030
56 ; CHECK:       Relocation 5
57 ; CHECK-NEXT:  'r_offset'
58 ; CHECK-NEXT:  'r_sym', 0x[[SYM3]]
59 ; CHECK-NEXT:  'r_type', 0x00000030
60
61 define double @test_double_const() nounwind {
62 entry:
63   ret double 0x3F4FD4920B498CF0
64 }
65
66 ; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO for
67 ; accessing a constant.
68 ;
69 ; CHECK:       Relocation 6
70 ; CHECK-NEXT:  'r_offset'
71 ; CHECK-NEXT:  'r_sym', 0x[[SYM4:[0-9]+]]
72 ; CHECK-NEXT:  'r_type', 0x00000032
73 ; CHECK:       Relocation 7
74 ; CHECK-NEXT:  'r_offset'
75 ; CHECK-NEXT:  'r_sym', 0x[[SYM4]]
76 ; CHECK-NEXT:  'r_type', 0x00000030
77