23 changes: 23 additions & 0 deletions llvm/test/CodeGen/PowerPC/ppc32-pic-large.ll
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu -relocation-model=pic | FileCheck -check-prefix=LARGE-BSS %s
@bar = common global i32 0, align 4

define i32 @foo() {
entry:
%0 = load i32* @bar, align 4
ret i32 %0
}

!llvm.module.flags = !{!0}
!0 = metadata !{i32 1, metadata !"flag_pic", i32 2}
; LARGE-BSS: [[POFF:\.L[0-9]+\$poff]]:
; LARGE-BSS-NEXT: .long .LTOC-[[PB:\.L[0-9]+\$pb]]
; LARGE-BSS-NEXT: foo:
; LARGE-BSS: bl [[PB]]
; LARGE-BSS-NEXT: [[PB]]:
; LARGE-BSS: mflr 30
; LARGE-BSS: lwz [[REG:[0-9]+]], [[POFF]]-[[PB]](30)
; LARGE-BSS-NEXT: add 30, [[REG]], 30
; LARGE-BSS: lwz [[VREG:[0-9]+]], [[VREF:\.LC[0-9]+]]-.LTOC(30)
; LARGE-BSS: lwz {{[0-9]+}}, 0([[VREG]])
; LARGE-BSS: [[VREF]]:
; LARGE-BSS-NEXT: .long bar
25 changes: 10 additions & 15 deletions llvm/test/CodeGen/PowerPC/ppc32-pic.ll
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu -relocation-model=pic | FileCheck %s
@foobar = common global i32 0, align 4
; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu -relocation-model=pic | FileCheck -check-prefix=SMALL-BSS %s
@bar = common global i32 0, align 4

define i32 @foo() {
entry:
%0 = load i32* @foobar, align 4
%0 = load i32* @bar, align 4
ret i32 %0
}

; CHECK: [[POFF:\.L[0-9]+\$poff]]:
; CHECK-NEXT: .long .L.TOC.-[[PB:\.L[0-9]+\$pb]]
; CHECK-NEXT: foo:
; CHECK: bl [[PB]]
; CHECK-NEXT: [[PB]]:
; CHECK: mflr 30
; CHECK: lwz [[REG:[0-9]+]], [[POFF]]-[[PB]](30)
; CHECK-NEXT: add 30, [[REG]], 30
; CHECK: lwz [[VREG:[0-9]+]], [[VREF:\.LC[0-9]+]]-.L.TOC.(30)
; CHECK: lwz {{[0-9]+}}, 0([[VREG]])
; CHECK: [[VREF]]:
; CHECK-NEXT: .long foobar
!llvm.module.flags = !{!0}
!0 = metadata !{i32 1, metadata !"flag_pic", i32 1}
; SMALL-BSS-LABEL:foo:
; SMALL-BSS: bl _GLOBAL_OFFSET_TABLE_@local-4
; SMALL-BSS: mflr 30
; SMALL-BSS: lwz [[VREG:[0-9]+]], bar@GOT(30)
; SMALL-BSS: lwz {{[0-9]+}}, 0([[VREG]])
5 changes: 0 additions & 5 deletions llvm/test/CodeGen/PowerPC/sections.ll
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
; Test to make sure that bss sections are printed with '.section' directive.
; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu | FileCheck %s
; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu -relocation-model=pic | FileCheck %s -check-prefix=PIC

@A = global i32 0

; CHECK: .section .bss,"aw",@nobits
; CHECK: .globl A

; PIC: .section .got2,"aw",@progbits
; PIC: .section .bss,"aw",@nobits
; PIC: .globl A
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/PowerPC/tls-pic.ll
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ entry:
; OPT0: addis [[REG2:[0-9]+]], 3, a@dtprel@ha
; OPT0-NEXT: addi {{[0-9]+}}, [[REG2]], a@dtprel@l
; OPT0-32-LABEL: main
; OPT0-32: addi {{[0-9]+}}, {{[0-9]+}}, a@got@tlsld
; OPT0-32: addi 3, {{[0-9]+}}, a@got@tlsld
; OPT0-32: bl __tls_get_addr(a@tlsld)@PLT
; OPT0-32: addis [[REG:[0-9]+]], 3, a@dtprel@ha
; OPT0-32-NEXT: addi {{[0-9]+}}, [[REG]], a@dtprel@l
Expand Down