brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.9 KiB · ebf53f2 Raw
276 lines · plain
1# REQUIRES: ppc2 3# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o4# RUN: llvm-readelf -r %t.o | FileCheck --check-prefix=InputRelocs %s5 6# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/shared-ppc64.s -o %t2.o7# RUN: ld.lld -shared -soname=t2.so %t2.o -o %t2.so8 9## Place all sections in the same segment so that .text and .TOC. are on the same page.10# RUN: echo 'PHDRS { all PT_LOAD; }' > %t.script11#12# RUN: ld.lld %t2.so %t.o -T %t.script -o %t13# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=Dis %s14#15# RUN: ld.lld %t2.so %t.o -T %t.script --no-toc-optimize -o %t16# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=NoOpt %s17 18# InputRelocs:  Relocation section '.rela.text'19# InputRelocs:   R_PPC64_TOC16_HA20# InputRelocs:   R_PPC64_TOC16_LO21# InputRelocs:   R_PPC64_TOC16_LO_DS22 23 24        .text25	.abiversion 226 27        .global bytes28        .p2align        429        .type   bytes,@function30bytes:31.Lbytes_gep:32        addis 2, 12, .TOC.-.Lbytes_gep@ha33        addi  2, 2,  .TOC.-.Lbytes_gep@l34.Lbytes_lep:35        .localentry     bytes, .Lbytes_lep-.Lbytes_gep36        addis 3, 2, byteLd@toc@ha37        lbz   3,    byteLd@toc@l(3)38        addis 4, 2, byteSt@toc@ha39        stb   3,    byteSt@toc@l(4)40        blr41# Dis-LABEL: <bytes>:42# Dis-NEXT:   addis43# Dis-NEXT:   addi44# Dis-NEXT:   nop45# Dis-NEXT:   lbz   3, -32752(2)46# Dis-NEXT:   nop47# Dis-NEXT:   stb   3, -32751(2)48# Dis-NEXT:   blr49 50# NoOpt-LABEL: <bytes>:51# NoOpt-NEXT:     addis52# NoOpt-NEXT:     addi53# NoOpt-NEXT:     addis 3, 2, 054# NoOpt-NEXT:     lbz 3, -32752(3)55# NoOpt-NEXT:     addis 4, 2, 056# NoOpt-NEXT:     stb 3, -32751(4)57# NoOpt-NEXT:     blr58 59        .global  halfs60        .p2align        461        .type   halfs,@function62halfs:63.Lhalfs_gep:64        addis 2, 12, .TOC.-.Lhalfs_gep@ha65        addi  2, 2,  .TOC.-.Lhalfs_gep@l66.Lhalfs_lep:67        .localentry  halfs, .Lhalfs_lep-.Lhalfs_gep68        addis 3, 2, halfLd@toc@ha69        lhz   3,    halfLd@toc@l(3)70        addis 4, 2, halfLd@toc@ha71        lha   4,    halfLd@toc@l(4)72        addis 5, 2, halfSt@toc@ha73        sth   4,    halfSt@toc@l(5)74        blr75# Dis-LABEL: <halfs>:76# Dis-NEXT:   addis77# Dis-NEXT:   addi78# Dis-NEXT:   nop79# Dis-NEXT:   lhz 3, -32750(2)80# Dis-NEXT:   nop81# Dis-NEXT:   lha 4, -32750(2)82# Dis-NEXT:   nop83# Dis-NEXT:   sth 4, -32748(2)84# Dis-NEXT:   blr85 86# NoOpt-LABEL: <halfs>:87# NoOpt-NEXT:   addis88# NoOpt-NEXT:   addi89# NoOpt-NEXT:   addis 3, 2, 090# NoOpt-NEXT:   lhz   3, -32750(3)91# NoOpt-NEXT:   addis 4, 2, 092# NoOpt-NEXT:   lha 4, -32750(4)93# NoOpt-NEXT:   addis 5, 2, 094# NoOpt-NEXT:   sth 4, -32748(5)95# NoOpt-NEXT:   blr96 97 98        .global words99        .p2align        4100        .type   words,@function101words:102.Lwords_gep:103       addis 2, 12, .TOC.-.Lwords_gep@ha104       addi  2, 2,  .TOC.-.Lwords_gep@l105.Lwords_lep:106       .localentry words, .Lwords_lep-.Lwords_gep107       addis 3, 2, wordLd@toc@ha108       lwz   3,    wordLd@toc@l(3)109       addis 4, 2, wordLd@toc@ha110       lwa   4,    wordLd@toc@l(4)111       addis 5, 2, wordSt@toc@ha112       stw   4,    wordSt@toc@l(5)113       blr114# Dis-LABEL: words115# Dis-NEXT:    addis116# Dis-NEXT:    addi117# Dis-NEXT:    nop118# Dis-NEXT:    lwz 3, -32744(2)119# Dis-NEXT:    nop120# Dis-NEXT:    lwa 4, -32744(2)121# Dis-NEXT:    nop122# Dis-NEXT:    stw 4, -32740(2)123# Dis-NEXT:    blr124 125# NoOpt-LABEL: words126# NoOpt-NEXT:    addis127# NoOpt-NEXT:    addi128# NoOpt-NEXT:    addis 3, 2, 0129# NoOpt-NEXT:    lwz 3, -32744(3)130# NoOpt-NEXT:    addis 4, 2, 0131# NoOpt-NEXT:    lwa 4, -32744(4)132# NoOpt-NEXT:    addis 5, 2, 0133# NoOpt-NEXT:    stw 4, -32740(5)134# NoOpt-NEXT:    blr135 136        .global doublewords137        .p2align        4138        .type   doublewords,@function139doublewords:140.Ldoublewords_gep:141       addis 2, 12, .TOC.-.Ldoublewords_gep@ha142       addi  2, 2,  .TOC.-.Ldoublewords_gep@l143.Ldoublewords_lep:144       .localentry doublewords, .Ldoublewords_lep-.Ldoublewords_gep145        addis 3, 2, dwordLd@toc@ha146        ld    3,    dwordLd@toc@l(3)147        addis 4, 2, dwordSt@toc@ha148        std   3,    dwordSt@toc@l(4)149        blr150 151# Dis-LABEL: doublewords152# Dis-NEXT:    addis153# Dis-NEXT:    addi154# Dis-NEXT:    nop155# Dis-NEXT:    ld 3, -32736(2)156# Dis-NEXT:    nop157# Dis-NEXT:    std 3, -32728(2)158# Dis-NEXT:    blr159 160# NoOpt-LABEL: doublewords161# NoOpt-NEXT:    addis162# NoOpt-NEXT:    addi163# NoOpt-NEXT:    addis 3, 2, 0164# NoOpt-NEXT:    ld 3, -32736(3)165# NoOpt-NEXT:    addis 4, 2, 0166# NoOpt-NEXT:    std 3, -32728(4)167# NoOpt-NEXT:    blr168 169       .global vec_dq170       .p2align 4171        .type vec_dq,@function172vec_dq:173.Lvec_dq_gep:174        addis 2, 12, .TOC.-.Lvec_dq_gep@ha175        addi  2,  2, .TOC.-.Lvec_dq_gep@l176.Lvec_dq_lep:177        .localentry  vec_dq, .Lvec_dq_lep-.Lvec_dq_gep178        addis 3, 2, vecLd@toc@ha179        lxv   3,    vecLd@toc@l(3)180        addis 3, 2, vecSt@toc@ha181        stxv  3,    vecSt@toc@l(3)182        blr183 184# Dis-LABEL: <vec_dq>:185# Dis-NEXT:    addis186# Dis-NEXT:    addi187# Dis-NEXT:    nop188# Dis-NEXT:    lxv 3, -32720(2)189# Dis-NEXT:    nop190# Dis-NEXT:    stxv 3, -32704(2)191# Dis-NEXT:    blr192 193# NoOpt-LABEL: <vec_dq>:194# NoOpt-NEXT:    addis195# NoOpt-NEXT:    addi196# NoOpt-NEXT:    addis 3, 2, 0197# NoOpt-NEXT:    lxv 3, -32720(3)198# NoOpt-NEXT:    addis 3, 2, 0199# NoOpt-NEXT:    stxv 3, -32704(3)200# NoOpt-NEXT:    blr201 202       .global vec_ds203       .p2align 4204        .type vec_ds,@function205vec_ds:206.Lvec_ds_gep:207        addis 2, 12, .TOC.-.Lvec_ds_gep@ha208        addi  2,  2, .TOC.-.Lvec_ds_gep@l209.Lvec_ds_lep:210        .localentry  vec_ds, .Lvec_dq_lep-.Lvec_dq_gep211        addis  3, 2, vecLd@toc@ha212        lxsd   3,    vecLd@toc@l(3)213        addis  3, 2, vecSt@toc@ha214        stxsd  3,    vecSt@toc@l(3)215        addis  3, 2, vecLd@toc@ha216        lxssp  3,    vecLd@toc@l(3)217        addis  3, 2, vecSt@toc@ha218        stxssp 3,    vecSt@toc@l(3)219        blr220# Dis-LABEL: <vec_ds>:221# Dis-NEXT:   addis222# Dis-NEXT:   addi223# Dis-NEXT:   nop224# Dis-NEXT:   lxsd 3, -32720(2)225# Dis-NEXT:   nop226# Dis-NEXT:   stxsd 3, -32704(2)227# Dis-NEXT:   nop228# Dis-NEXT:   lxssp 3, -32720(2)229# Dis-NEXT:   nop230# Dis-NEXT:   stxssp 3, -32704(2)231# Dis-NEXT:   blr232 233# NoOpt-LABEL: <vec_ds>:234# NoOpt-NEXT:   addis235# NoOpt-NEXT:   addi236# NoOpt-NEXT:   addis 3, 2, 0237# NoOpt-NEXT:   lxsd 3, -32720(3)238# NoOpt-NEXT:   addis 3, 2, 0239# NoOpt-NEXT:   stxsd 3, -32704(3)240# NoOpt-NEXT:   addis 3, 2, 0241# NoOpt-NEXT:   lxssp 3, -32720(3)242# NoOpt-NEXT:   addis 3, 2, 0243# NoOpt-NEXT:   stxssp 3, -32704(3)244# NoOpt-NEXT:   blr245 246 247       .global byteLd248       .lcomm  byteLd, 1, 1249 250       .global byteSt251       .lcomm  byteSt, 1, 1252 253       .global halfLd254       .lcomm  halfLd, 2, 2255 256       .global halfSt257       .lcomm  halfSt, 2, 2258 259       .global wordLd260       .lcomm  wordLd, 4, 4261 262       .global wordSt263       .lcomm  wordSt, 4, 4264 265       .global dwordLd266       .lcomm  dwordLd, 8, 8267 268       .global dwordSt269       .lcomm  dwordSt, 8, 8270 271       .global vecLd272       .lcomm  vecLd, 16, 16273 274       .global vecSt275       .lcomm  vecSt, 16, 16276