brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.5 KiB · 46102ec Raw
393 lines · plain
1# REQUIRES: ppc2# RUN: llvm-mc -filetype=obj -triple=powerpc64le %s -o %t1.o3# RUN: llvm-mc -filetype=obj -triple=powerpc64le %p/Inputs/ppc64-got-to-pcrel-relaxation-def.s -o %t2.o4# RUN: ld.lld --shared %t2.o -o %t2.so --soname=t25# RUN: ld.lld %t1.o %t2.o -o %t6# RUN: ld.lld %t1.o %t2.so -o %ts7# RUN: ld.lld %t1.o %t2.o -o %tn --no-pcrel-optimize8# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s --check-prefix=CHECK-S9# RUN: llvm-objdump -d --no-show-raw-insn %ts | FileCheck %s --check-prefix=CHECK-D10# RUN: llvm-objdump -d --no-show-raw-insn %tn | FileCheck %s --check-prefix=CHECK-D11 12# RUN: llvm-mc -filetype=obj -triple=powerpc64 %s -o %t1.o13# RUN: llvm-mc -filetype=obj -triple=powerpc64 %p/Inputs/ppc64-got-to-pcrel-relaxation-def.s -o %t2.o14# RUN: ld.lld --shared %t2.o -o %t2.so --soname=t215# RUN: ld.lld %t1.o %t2.o -o %t16# RUN: ld.lld %t1.o %t2.so -o %ts17# RUN: ld.lld %t1.o %t2.o -o %tn --no-pcrel-optimize18# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s --check-prefix=CHECK-S19# RUN: llvm-objdump -d --no-show-raw-insn %ts | FileCheck %s --check-prefix=CHECK-D20# RUN: llvm-objdump -d --no-show-raw-insn %tn | FileCheck %s --check-prefix=CHECK-D21 22# CHECK-S-LABEL: <check_LBZ_STB>:23# CHECK-S-NEXT:    plbz 1024# CHECK-S-NEXT:    paddi 925# CHECK-S-NEXT:    li 3, 026# CHECK-S-NEXT:    nop27# CHECK-S-NEXT:    rldicl 9, 9, 9, 6028# CHECK-S-NEXT:    add 9, 9, 1029# CHECK-S-NEXT:    pstb 930# CHECK-S-NEXT:    nop31# CHECK-S-NEXT:    blr32 33# CHECK-D-LABEL: <check_LBZ_STB>:34# CHECK-D-NEXT:    pld 835# CHECK-D-NEXT:    pld 936# CHECK-D-NEXT:    li 3, 037# CHECK-D-NEXT:    lbz 10, 0(8)38# CHECK-D-NEXT:    rldicl 9, 9, 9, 6039# CHECK-D-NEXT:    add 9, 9, 1040# CHECK-D-NEXT:    pld 1041# CHECK-D-NEXT:    stb 9, 0(10)42# CHECK-D-NEXT:    blr43check_LBZ_STB:44  pld 8,useVal@got@pcrel(0),145.Lpcrel1:46  pld 9,useAddr@got@pcrel(0),147  li 3,048  .reloc .Lpcrel1-8,R_PPC64_PCREL_OPT,.-(.Lpcrel1-8)49  lbz 10,0(8)50  rldicl 9,9,9,6051  add 9,9,1052  pld 10,storeVal@got@pcrel(0),153.Lpcrel2:54  .reloc .Lpcrel2-8,R_PPC64_PCREL_OPT,.-(.Lpcrel2-8)55  stb 9,0(10)56  blr57 58# CHECK-S-LABEL: <check_LHZ_STH>:59# CHECK-S-NEXT:    plhz 360# CHECK-S-NEXT:    nop61# CHECK-S-NEXT:    nop62# CHECK-S-NEXT:    psth 363# CHECK-S-NEXT:    nop64# CHECK-S-NEXT:    blr65 66# CHECK-D-LABEL: <check_LHZ_STH>:67# CHECK-D-NEXT:    pld 968# CHECK-D-NEXT:    lhz 3, 0(9)69# CHECK-D-NEXT:    nop70# CHECK-D-NEXT:    pld 971# CHECK-D-NEXT:    sth 3, 0(9)72# CHECK-D-NEXT:    blr73check_LHZ_STH:74  pld 9,useVal_ushort@got@pcrel(0),175.Lpcrel3:76  .reloc .Lpcrel3-8,R_PPC64_PCREL_OPT,.-(.Lpcrel3-8)77  lhz 3,0(9)78  pld 9,storeVal_ushort@got@pcrel(0),179.Lpcrel4:80  .reloc .Lpcrel4-8,R_PPC64_PCREL_OPT,.-(.Lpcrel4-8)81  sth 3,0(9)82  blr83 84# CHECK-S-LABEL: <check_LWZ_STW>:85# CHECK-S-NEXT:    plwz 386# CHECK-S-NEXT:    nop87# CHECK-S-NEXT:    pstw 388# CHECK-S-NEXT:    nop89# CHECK-S-NEXT:    blr90 91# CHECK-D-LABEL: <check_LWZ_STW>:92# CHECK-D-NEXT:    pld 993# CHECK-D-NEXT:    lwz 3, 0(9)94# CHECK-D-NEXT:    pld 995# CHECK-D-NEXT:    stw 3, 0(9)96# CHECK-D-NEXT:    blr97check_LWZ_STW:98  pld 9,useVal_uint@got@pcrel(0),199.Lpcrel5:100  .reloc .Lpcrel5-8,R_PPC64_PCREL_OPT,.-(.Lpcrel5-8)101  lwz 3,0(9)102  pld 9,storeVal_uint@got@pcrel(0),1103.Lpcrel6:104  .reloc .Lpcrel6-8,R_PPC64_PCREL_OPT,.-(.Lpcrel6-8)105  stw 3,0(9)106  blr107 108# CHECK-S-LABEL: <check_LFS_STFS>:109# CHECK-S-NEXT:    plfs 1110# CHECK-S-NEXT:    nop111# CHECK-S-NEXT:    pstfs 1112# CHECK-S-NEXT:    nop113# CHECK-S-NEXT:    blr114 115# CHECK-D-LABEL: <check_LFS_STFS>:116# CHECK-D-NEXT:    pld 9117# CHECK-D-NEXT:    lfs 1, 0(9)118# CHECK-D-NEXT:    pld 9119# CHECK-D-NEXT:    stfs 1, 0(9)120# CHECK-D-NEXT:    blr121check_LFS_STFS:122  pld 9,useVal_float@got@pcrel(0),1123.Lpcrel7:124  .reloc .Lpcrel7-8,R_PPC64_PCREL_OPT,.-(.Lpcrel7-8)125  lfs 1,0(9)126  pld 9,storeVal_float@got@pcrel(0),1127.Lpcrel8:128  .reloc .Lpcrel8-8,R_PPC64_PCREL_OPT,.-(.Lpcrel8-8)129  stfs 1,0(9)130  blr131 132# CHECK-S-LABEL: <check_LFD_STFD>:133# CHECK-S-NEXT:    plfd 1134# CHECK-S-NEXT:    nop135# CHECK-S-NEXT:    pstfd 1136# CHECK-S-NEXT:    nop137# CHECK-S-NEXT:    blr138 139# CHECK-D-LABEL: <check_LFD_STFD>:140# CHECK-D-NEXT:    pld 9141# CHECK-D-NEXT:    lfd 1, 0(9)142# CHECK-D-NEXT:    pld 9143# CHECK-D-NEXT:    stfd 1, 0(9)144# CHECK-D-NEXT:    blr145check_LFD_STFD:146  pld 9,useVal_double@got@pcrel(0),1147.Lpcrel9:148  .reloc .Lpcrel9-8,R_PPC64_PCREL_OPT,.-(.Lpcrel9-8)149  lfd 1,0(9)150  pld 9,storeVal_double@got@pcrel(0),1151.Lpcrel10:152  .reloc .Lpcrel10-8,R_PPC64_PCREL_OPT,.-(.Lpcrel10-8)153  stfd 1,0(9)154  blr155 156# CHECK-S-LABEL: <check_LWA_STW>:157# CHECK-S-NEXT:    mr 9, 3158# CHECK-S-NEXT:    plwa 3159# CHECK-S-NEXT:    pstw 9160# CHECK-S-NEXT:    nop161# CHECK-S-NEXT:    nop162# CHECK-S-NEXT:    blr163 164# CHECK-D-LABEL: <check_LWA_STW>:165# CHECK-D-NEXT:    mr 9, 3166# CHECK-D-NEXT:    pld 8167# CHECK-D-NEXT:    pld 10168# CHECK-D-NEXT:    lwa 3, 0(8)169# CHECK-D-NEXT:    stw 9, 0(10)170# CHECK-D-NEXT:    blr171check_LWA_STW:172  mr 9,3173  pld 8,useVal_sint@got@pcrel(0),1174.Lpcrel11:175  pld 10,storeVal_sint@got@pcrel(0),1176.Lpcrel12:177  .reloc .Lpcrel11-8,R_PPC64_PCREL_OPT,.-(.Lpcrel11-8)178  lwa 3,0(8)179  .reloc .Lpcrel12-8,R_PPC64_PCREL_OPT,.-(.Lpcrel12-8)180  stw 9,0(10)181  blr182 183# CHECK-S-LABEL: <check_LHA_STH>:184# CHECK-S-NEXT:    mr 9, 3185# CHECK-S-NEXT:    plha 3186# CHECK-S-NEXT:    psth 9187# CHECK-S-NEXT:    nop188# CHECK-S-NEXT:    nop189# CHECK-S-NEXT:    blr190 191# CHECK-D-LABEL: <check_LHA_STH>:192# CHECK-D-NEXT:    mr 9, 3193# CHECK-D-NEXT:    pld 8194# CHECK-D-NEXT:    pld 10195# CHECK-D-NEXT:    lha 3, 0(8)196# CHECK-D-NEXT:    sth 9, 0(10)197# CHECK-D-NEXT:    blr198check_LHA_STH:199  mr 9,3200  pld 8,useVal_sshort@got@pcrel(0),1201.Lpcrel13:202  pld 10,storeVal_sshort@got@pcrel(0),1203.Lpcrel14:204  .reloc .Lpcrel13-8,R_PPC64_PCREL_OPT,.-(.Lpcrel13-8)205  lha 3,0(8)206  .reloc .Lpcrel14-8,R_PPC64_PCREL_OPT,.-(.Lpcrel14-8)207  sth 9,0(10)208  blr209 210# CHECK-S-LABEL: <check_LD_STD>:211# CHECK-S-NEXT:    pld 3212# CHECK-S-NEXT:    nop213# CHECK-S-NEXT:    pstd 3214# CHECK-S-NEXT:    nop215# CHECK-S-NEXT:    blr216 217# CHECK-D-LABEL: <check_LD_STD>:218# CHECK-D-NEXT:    pld 9219# CHECK-D-NEXT:    ld 3, 0(9)220# CHECK-D-NEXT:    pld 9221# CHECK-D-NEXT:    std 3, 0(9)222# CHECK-D-NEXT:    blr223check_LD_STD:224  pld 9,useVal_longlong@got@pcrel(0),1225.Lpcrel15:226  .reloc .Lpcrel15-8,R_PPC64_PCREL_OPT,.-(.Lpcrel15-8)227  ld 3,0(9)228  pld 9,storeVal_longlong@got@pcrel(0),1229.Lpcrel16:230  .reloc .Lpcrel16-8,R_PPC64_PCREL_OPT,.-(.Lpcrel16-8)231  std 3,0(9)232  blr233 234# CHECK-S-LABEL: <check_LXV_STXV>:235# CHECK-S-NEXT:    plxv 34236# CHECK-S-NEXT:    nop237# CHECK-S-NEXT:    pstxv 34238# CHECK-S-NEXT:    nop239# CHECK-S-NEXT:    blr240 241# CHECK-D-LABEL: <check_LXV_STXV>:242# CHECK-D-NEXT:    pld 9243# CHECK-D-NEXT:    lxv 34, 0(9)244# CHECK-D-NEXT:    pld 9245# CHECK-D-NEXT:    stxv 34, 0(9)246# CHECK-D-NEXT:    blr247check_LXV_STXV:248  pld 9,useVal_vector@got@pcrel(0),1249.Lpcrel17:250  .reloc .Lpcrel17-8,R_PPC64_PCREL_OPT,.-(.Lpcrel17-8)251  lxv 34,0(9)252  pld 9,storeVal_vector@got@pcrel(0),1253.Lpcrel18:254  .reloc .Lpcrel18-8,R_PPC64_PCREL_OPT,.-(.Lpcrel18-8)255  stxv 34,0(9)256  blr257 258# CHECK-S-LABEL: <check_LXSSP_STXSSP>:259# CHECK-S-NEXT:    plxssp 1260# CHECK-S-NEXT:    nop261# CHECK-S-NEXT:    pstxssp 1262# CHECK-S-NEXT:    nop263# CHECK-S-NEXT:    blr264 265# CHECK-D-LABEL: <check_LXSSP_STXSSP>:266# CHECK-D-NEXT:    pld 9267# CHECK-D-NEXT:    lxssp 1, 0(9)268# CHECK-D-NEXT:    pld 9269# CHECK-D-NEXT:    stxssp 1, 0(9)270# CHECK-D-NEXT:    blr271check_LXSSP_STXSSP:272  pld 9,useVal_float@got@pcrel(0),1273.Lpcrel19:274  .reloc .Lpcrel19-8,R_PPC64_PCREL_OPT,.-(.Lpcrel19-8)275  lxssp 1,0(9)276  pld 9,storeVal_float@got@pcrel(0),1277.Lpcrel20:278  .reloc .Lpcrel20-8,R_PPC64_PCREL_OPT,.-(.Lpcrel20-8)279  stxssp 1,0(9)280  blr281 282# CHECK-S-LABEL: <check_LXSD_STXSD>:283# CHECK-S-NEXT:    plxsd 1, [[#ADDR1:]]284# CHECK-S-NEXT:    nop285# CHECK-S-NEXT:    pstxsd 1, [[#ADDR2:]]286# CHECK-S-NEXT:    nop287# CHECK-S-NEXT:    blr288 289# CHECK-D-LABEL: <check_LXSD_STXSD>:290# CHECK-D-NEXT:    pld 9291# CHECK-D-NEXT:    lxsd 1, 0(9)292# CHECK-D-NEXT:    pld 9293# CHECK-D-NEXT:    stxsd 1, 0(9)294# CHECK-D-NEXT:    blr295check_LXSD_STXSD:296  pld 9,useVal_double@got@pcrel(0),1297.Lpcrel21:298  .reloc .Lpcrel21-8,R_PPC64_PCREL_OPT,.-(.Lpcrel21-8)299  lxsd 1,0(9)300  pld 9,storeVal_double@got@pcrel(0),1301.Lpcrel22:302  .reloc .Lpcrel22-8,R_PPC64_PCREL_OPT,.-(.Lpcrel22-8)303  stxsd 1,0(9)304  blr305 306# The respective displacements are computed relative to the PC which advanced307# by 28 bytes in this function. Since the displacements in the two access308# instructions are 8 and 32 so the displacements are those computed above minus309# 20 and plus 4 (+8 - 28 and +32 - 28) respectively.310# CHECK-S-LABEL: <check_LXSD_STXSD_aggr>:311# CHECK-S-NEXT:    plxsd 1, [[#ADDR1-20]]312# CHECK-S-NEXT:    nop313# CHECK-S-NEXT:    pstxsd 1, [[#ADDR2+4]]314# CHECK-S-NEXT:    nop315# CHECK-S-NEXT:    blr316 317# CHECK-D-LABEL: <check_LXSD_STXSD_aggr>:318# CHECK-D-NEXT:    pld 9319# CHECK-D-NEXT:    lxsd 1, 8(9)320# CHECK-D-NEXT:    pld 9321# CHECK-D-NEXT:    stxsd 1, 32(9)322# CHECK-D-NEXT:    blr323check_LXSD_STXSD_aggr:324  pld 9,useVal_double@got@pcrel(0),1325.Lpcrel23:326  .reloc .Lpcrel23-8,R_PPC64_PCREL_OPT,.-(.Lpcrel23-8)327  lxsd 1,8(9)328  pld 9,storeVal_double@got@pcrel(0),1329.Lpcrel24:330  .reloc .Lpcrel24-8,R_PPC64_PCREL_OPT,.-(.Lpcrel24-8)331  stxsd 1,32(9)332  blr333 334# This includes a nop but that is not emitted by the linker.335# It is an alignment nop to prevent the prefixed instruction from336# crossing a 64-byte boundary.337# CHECK-S-LABEL: <check_LD_STD_W_PADDI>:338# CHECK-S-NEXT:    paddi 9339# CHECK-S-NEXT:    ld 3, 0(9)340# CHECK-S-NEXT:    nop341# CHECK-S-NEXT:    paddi 9342# CHECK-S-NEXT:    std 3, 0(9)343# CHECK-S-NEXT:    blr344 345# CHECK-D-LABEL: <check_LD_STD_W_PADDI>:346# CHECK-D-NEXT:    paddi 9347# CHECK-D-NEXT:    ld 3, 0(9)348# CHECK-D-NEXT:    nop349# CHECK-D-NEXT:    paddi 9350# CHECK-D-NEXT:    std 3, 0(9)351# CHECK-D-NEXT:    blr352check_LD_STD_W_PADDI:353  paddi 9,0,useVal_longlong@got@pcrel,1354.Lpcrel25:355  .reloc .Lpcrel25-8,R_PPC64_PCREL_OPT,.-(.Lpcrel25-8)356  ld 3,0(9)357  paddi 9,0,storeVal_longlong@got@pcrel,1358.Lpcrel26:359  .reloc .Lpcrel26-8,R_PPC64_PCREL_OPT,.-(.Lpcrel26-8)360  std 3,0(9)361  blr362# CHECK-S-LABEL: <check_LXSD_STXSD_aggr_notoc>:363# CHECK-S-NEXT:    paddi 3, 0, -12, 1364# CHECK-S-NEXT:    lwz 4, 8(3)365# CHECK-S-NEXT:    paddi 3, 0, -24, 1366# CHECK-S-NEXT:    stw 4, 32(3)367# CHECK-S-NEXT:    blr368 369# CHECK-D-LABEL: <check_LXSD_STXSD_aggr_notoc>:370# CHECK-D-NEXT:    paddi 3, 0, -12, 1371# CHECK-D-NEXT:    lwz 4, 8(3)372# CHECK-D-NEXT:    paddi 3, 0, -24, 1373# CHECK-D-NEXT:    stw 4, 32(3)374# CHECK-D-NEXT:    blr375.type	Arr,@object                     # @Arr376.globl	Arr377.p2align	2378Arr:379.long	11                              # 0xb380.long	22                              # 0x16381.long	33                              # 0x21382check_LXSD_STXSD_aggr_notoc:383  paddi 3, 0, Arr@PCREL, 1384.Lpcrel27:385  .reloc .Lpcrel27-8,R_PPC64_PCREL_OPT,.-(.Lpcrel27-8)386  lwz 4,8(3)387  paddi 3, 0, Arr@PCREL, 1388.Lpcrel28:389  .reloc .Lpcrel28-8,R_PPC64_PCREL_OPT,.-(.Lpcrel28-8)390  stw 4,32(3)391  blr392 393