1 ; RUN: llc -O1 -mcpu=pwr7 -code-model=medium -filetype=obj %s -o - | \
2 ; RUN: elf-dump --dump-section-data | FileCheck %s
4 ; FIXME: When asm-parse is available, could make this an assembly test.
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"
9 @test_fn_static.si = internal global i32 0, align 4
11 define signext i32 @test_fn_static() nounwind {
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
19 ; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO for
20 ; accessing function-scoped variable si.
23 ; CHECK-NEXT: 'r_offset'
24 ; CHECK-NEXT: 'r_sym', 0x[[SYM2:[0-9]+]]
25 ; CHECK-NEXT: 'r_type', 0x00000032
27 ; CHECK-NEXT: 'r_offset'
28 ; CHECK-NEXT: 'r_sym', 0x[[SYM2]]
29 ; CHECK-NEXT: 'r_type', 0x00000030
31 ; CHECK-NEXT: 'r_offset'
32 ; CHECK-NEXT: 'r_sym', 0x[[SYM2]]
33 ; CHECK-NEXT: 'r_type', 0x00000030
35 @gi = global i32 5, align 4
37 define signext i32 @test_file_static() nounwind {
39 %0 = load i32* @gi, align 4
40 %inc = add nsw i32 %0, 1
41 store i32 %inc, i32* @gi, align 4
45 ; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO for
46 ; accessing file-scope variable gi.
49 ; CHECK-NEXT: 'r_offset'
50 ; CHECK-NEXT: 'r_sym', 0x[[SYM3:[0-9]+]]
51 ; CHECK-NEXT: 'r_type', 0x00000032
53 ; CHECK-NEXT: 'r_offset'
54 ; CHECK-NEXT: 'r_sym', 0x[[SYM3]]
55 ; CHECK-NEXT: 'r_type', 0x00000030
57 ; CHECK-NEXT: 'r_offset'
58 ; CHECK-NEXT: 'r_sym', 0x[[SYM3]]
59 ; CHECK-NEXT: 'r_type', 0x00000030
61 define double @test_double_const() nounwind {
63 ret double 0x3F4FD4920B498CF0
66 ; Verify generation of R_PPC64_TOC16_HA and R_PPC64_TOC16_LO for
67 ; accessing a constant.
70 ; CHECK-NEXT: 'r_offset'
71 ; CHECK-NEXT: 'r_sym', 0x[[SYM4:[0-9]+]]
72 ; CHECK-NEXT: 'r_type', 0x00000032
74 ; CHECK-NEXT: 'r_offset'
75 ; CHECK-NEXT: 'r_sym', 0x[[SYM4]]
76 ; CHECK-NEXT: 'r_type', 0x00000030