# REQUIRES: ppc

# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o
# RUN: ld.lld --no-toc-optimize -z separate-code %t.o -o %t
# RUN: llvm-nm %t | FileCheck --check-prefix=NM %s
# RUN: llvm-readelf -x .branch_lt %t | FileCheck %s -check-prefix=BRANCH-LE
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s

# RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o
# RUN: ld.lld --no-toc-optimize -z separate-code %t.o -o %t
# RUN: llvm-nm %t | FileCheck --check-prefix=NM %s
# RUN: llvm-readelf -x .branch_lt %t | FileCheck %s -check-prefix=BRANCH-BE
# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s

        .text
        .abiversion 2
        .protected callee
        .globl callee
        .p2align 4
        .type callee,@function
callee:
.Lfunc_gep0:
    addis 2, 12, .TOC.-.Lfunc_gep0@ha
    addi 2, 2, .TOC.-.Lfunc_gep0@l
.Lfunc_lep0:
    .localentry callee, .Lfunc_lep0-.Lfunc_gep0
    addis 4, 2, .LC0@toc@ha
    ld    4, .LC0@toc@l(4)
    lwz   3, 0(4)
    blr

        .space 0x2000000

        .protected _start
        .global _start
        .p2align 4
        .type _start,@function
_start:
.Lfunc_begin1:
.Lfunc_gep1:
    addis 2, 12, .TOC.-.Lfunc_gep1@ha
    addi 2, 2, .TOC.-.Lfunc_gep1@l
.Lfunc_lep1:
    .localentry	_start, .Lfunc_lep1-.Lfunc_gep1
    mflr 0
    std  0, 16(1)
    stdu 1, -32(1)
    bl callee
    bl callee
    addi 1, 1, 32
    ld   0, 16(1)
    mtlr 0

        .section        .toc,"aw",@progbits
.LC0:
       .tc a[TC],a


        .data
        .type a,@object
        .globl a
        .p2align 2
a:
        .long 11
        .size a, 4

# NM: 0000000012028000 d .TOC.

# Without --toc-optimize, compute the address of .toc[0] first. .toc[0] stores
# the address of a.
# .TOC. - callee = 0x12030000 - 0x10010000 = (514<<16) - 32768
# CHECK: callee:
# CHECK:   10010000:       addis 2, 12, 514
# CHECK:   10010004:       addi 2, 2, -32768
# CHECK:   10010008:       addis 4, 2, 0

# __long_branch_callee - . = 0x12010050 - 0x12010034 = 20
# __long_branch_callee is not a PLT call stub. Calling it does not need TOC
# restore, so it doesn't have to be followed by a nop.
# CHECK: _start:
# CHECK:   12010034:       bl .+20
# CHECK:   12010038:       bl .+16

# BRANCH-LE:     section '.branch_lt':
# BRANCH-LE-NEXT: 0x12030018 08000110 00000000
# BRANCH-BE:     section '.branch_lt':
# BRANCH-BE-NEXT: 0x12030018 00000000 10010008

# .branch_lt - .TOC. = 0x12030018 - 0x12028000 = (1<<16) - 32744
# CHECK:     __long_branch_callee:
# CHECK-NEXT: 12010048:       addis 12, 2, 1
# CHECK-NEXT:                 ld 12, -32744(12)
# CHECK-NEXT:                 mtctr 12
# CHECK-NEXT:                 bctr
