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 6target 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" 7target triple = "powerpc64-unknown-linux-gnu" 8 9@test_fn_static.si = internal global i32 0, align 4 10 11define signext i32 @test_fn_static() nounwind { 12entry: 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 37define signext i32 @test_file_static() nounwind { 38entry: 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 61define double @test_double_const() nounwind { 62entry: 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 78