aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-powerpc/tocopt7.s
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-powerpc/tocopt7.s')
-rw-r--r--ld/testsuite/ld-powerpc/tocopt7.s216
1 files changed, 216 insertions, 0 deletions
diff --git a/ld/testsuite/ld-powerpc/tocopt7.s b/ld/testsuite/ld-powerpc/tocopt7.s
new file mode 100644
index 0000000..dbd8eb1
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/tocopt7.s
@@ -0,0 +1,216 @@
+ .section .toc,"aw"
+ .p2align 4
+x4t:
+ .quad x4
+x5t:
+ .quad x5
+x6t:
+ .quad x6
+
+ .section .sdata,"aw"
+ .p2align 4
+x1:
+ .quad 1
+x2:
+ .quad 2
+x3:
+ .quad 3
+x4:
+ .quad 4
+x5:
+ .quad 5
+x6:
+ .quad 6
+
+ .globl _start
+ .text
+_start:
+# no need for got entry, optimise to nop,addi
+# note: ld doesn't yet do got optimisation, so we get nop,ld
+ addis 9,2,x1@got@ha
+ ld 9,x1@got@l(9)
+# must keep got entry, optimise to nop,addi,ld
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ ld 6,0(5)
+# can't optimise due to possibility that r28 isn't dead
+ addis 28,2,x1@got@ha
+ ldu 9,x1@got@l(28)
+# no need for toc entry, optimise to nop,addi
+ addis 9,2,x4t@toc@ha
+ ld 9,x4t@toc@l(9)
+# must keep toc entry, optimise to nop,addi,ld
+# if we had a reloc tying the ld to x5/x5t then we could throw away
+# the toc entry and optimise to nop,nop,addi
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ ld 6,0(5)
+# can't optimise due to possibility that r28 isn't dead
+ addis 28,2,x4t@toc@ha
+ ldu 9,x4t@toc@l(28)
+
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ lwz 6,0(5)
+ addis 9,2,x4t@toc@ha
+ lwz 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ lwz 6,0(5)
+ addis 28,2,x4t@toc@ha
+ lwzu 9,x4t@toc@l(28)
+
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ lwa 6,0(5)
+ addis 9,2,x4t@toc@ha
+ lwa 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ lwa 6,0(5)
+
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ lhz 6,0(5)
+ addis 9,2,x4t@toc@ha
+ lhz 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ lhz 6,0(5)
+ addis 28,2,x4t@toc@ha
+ lhzu 9,x4t@toc@l(28)
+
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ lha 6,0(5)
+ addis 9,2,x4t@toc@ha
+ lha 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ lha 6,0(5)
+
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ lbz 6,0(5)
+ addis 9,2,x4t@toc@ha
+ lbz 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ lbz 6,0(5)
+ addis 28,2,x4t@toc@ha
+ lbzu 9,x4t@toc@l(28)
+
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ lfs 6,0(5)
+ addis 9,2,x4t@toc@ha
+ lfs 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ lfs 6,0(5)
+ addis 28,2,x4t@toc@ha
+ lfsu 9,x4t@toc@l(28)
+
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ lfd 6,0(5)
+ addis 9,2,x4t@toc@ha
+ lfd 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ lfd 6,0(5)
+ addis 28,2,x4t@toc@ha
+ lfdu 9,x4t@toc@l(28)
+
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ lxv 6,0(5)
+ addis 9,2,x4t@toc@ha
+ lxv 9,x4t@toc@l(9)
+ addis 4,2,x6t@toc@ha
+ addi 5,4,x6t@toc@l
+ lxv 6,0(5)
+
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ lxsd 6,0(5)
+ addis 9,2,x4t@toc@ha
+ lxsd 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ lxsd 6,0(5)
+
+ addis 4,2,x2@got@ha
+ addi 5,4,x2@got@l
+ lxssp 6,0(5)
+ addis 9,2,x4t@toc@ha
+ lxssp 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ lxssp 6,0(5)
+
+ addis 9,2,x4t@toc@ha
+ std 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ std 6,0(5)
+ addis 28,2,x4t@toc@ha
+ stdu 9,x4t@toc@l(28)
+
+ addis 9,2,x4t@toc@ha
+ stw 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ stw 6,0(5)
+ addis 28,2,x4t@toc@ha
+ stwu 9,x4t@toc@l(28)
+
+ addis 9,2,x4t@toc@ha
+ sth 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ sth 6,0(5)
+ addis 28,2,x4t@toc@ha
+ sthu 9,x4t@toc@l(28)
+
+ addis 9,2,x4t@toc@ha
+ stb 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ stb 6,0(5)
+ addis 28,2,x4t@toc@ha
+ stbu 9,x4t@toc@l(28)
+
+ addis 9,2,x4t@toc@ha
+ stfs 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ stfs 6,0(5)
+ addis 28,2,x4t@toc@ha
+ stfsu 9,x4t@toc@l(28)
+
+ addis 9,2,x4t@toc@ha
+ stfd 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ stfd 6,0(5)
+ addis 28,2,x4t@toc@ha
+ stfdu 9,x4t@toc@l(28)
+
+ addis 9,2,x4t@toc@ha
+ stxv 9,x4t@toc@l(9)
+ addis 4,2,x6t@toc@ha
+ addi 5,4,x6t@toc@l
+ stxv 6,0(5)
+
+ addis 9,2,x4t@toc@ha
+ stxsd 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ stxsd 6,0(5)
+
+ addis 9,2,x4t@toc@ha
+ stxssp 9,x4t@toc@l(9)
+ addis 4,2,x5t@toc@ha
+ addi 5,4,x5t@toc@l
+ stxssp 6,0(5)