aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/testsuite/ChangeLog5
-rw-r--r--ld/testsuite/ld-spu/icache1.d202
-rw-r--r--ld/testsuite/ld-spu/icache1.s111
3 files changed, 318 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 2fb90df..ae1513d 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2009-01-13 Alan Modra <amodra@bigpond.net.au>
+ * ld-spu/icache1.s: New file.
+ * ld-spu/icache1.d: New file.
+
+2009-01-13 Alan Modra <amodra@bigpond.net.au>
+
* ld-elf/elf.exp: Save and restore LDFLAGS.
* ld-scripts/default-script.exp: Likewise.
* ld-scripts/empty-orphan.exp: Likewise, and add to LDFLAGS rather
diff --git a/ld/testsuite/ld-spu/icache1.d b/ld/testsuite/ld-spu/icache1.d
new file mode 100644
index 0000000..3edaa99
--- /dev/null
+++ b/ld/testsuite/ld-spu/icache1.d
@@ -0,0 +1,202 @@
+#source: icache1.s
+#ld: --soft-icache --num-lines=4 --auto-overlay=tmpdir/icache1.lnk --auto-relink
+#objdump: -D
+
+.* elf32-spu
+
+
+Disassembly of section .ovl.init:
+00000800 <__icache_fileoff>:
+.* 00 00 00 00.*
+.* 00 00 07 80.*
+ \.\.\.
+
+Disassembly of section \.ovly1:
+
+00000800 <\.ovly1>:
+.* ai \$1,\$1,64 # 40
+.* lqd \$0,16\(\$1\)
+.* bi \$0
+ \.\.\.
+
+Disassembly of section \.ovly2:
+
+00000c00 <f1>:
+.* 40 20 00 00 nop \$0
+.* 24 00 40 80 stqd \$0,16\(\$1\)
+.* 1c f0 00 81 ai \$1,\$1,-64
+.* 24 00 00 81 stqd \$1,0\(\$1\)
+.* 33 00 73 80 brsl \$0,fac .*
+.* 33 00 77 00 brsl \$0,fcc .*
+ \.\.\.
+.* 32 00 16 80 br fec .*
+ \.\.\.
+ fa0: 00 00 00 02.*
+ fa4: 00 00 11 04.*
+ fa8: a0 00 0c 10.*
+ fac: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ fb0: 00 00 ed 00.*
+ \.\.\.
+ fc0: 00 00 00 02.*
+ fc4: 00 00 10 00.*
+ fc8: a0 00 0c 14.*
+ fcc: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ fd0: 00 00 00 00.*
+ fd4: 00 00 0a 80.*
+ \.\.\.
+ fe4: 00 00 08 00.*
+ fe8: 20 00 0f 38.*
+ fec: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ \.\.\.
+ ff8: 00 7f 0f 80.*
+ ffc: 00 00 00 00.*
+
+Disassembly of section \.ovly3:
+
+00001000 <f3>:
+ \.\.\.
+.* 35 00 00 00 bi \$0
+
+00001104 <f2>:
+.* 1c e0 00 81 ai \$1,\$1,-128
+.* 24 00 00 81 stqd \$1,0\(\$1\)
+ \.\.\.
+.* 1c 20 00 81 ai \$1,\$1,128 # 80
+.* 35 00 00 00 bi \$0
+ \.\.\.
+
+Disassembly of section \.ovly4:
+
+00001400 <f5>:
+.* 24 00 40 80 stqd \$0,16\(\$1\)
+.* 24 f8 00 81 stqd \$1,-512\(\$1\)
+.* 1c 80 00 81 ai \$1,\$1,-512
+.* 33 7f fe 80 brsl \$0,1400 <f5> # 1400
+ \.\.\.
+.* 42 01 00 03 ila \$3,200 <__icache_linked_list\+0x1c0>
+.* 18 00 c0 81 a \$1,\$1,\$3
+.* 34 00 40 80 lqd \$0,16\(\$1\)
+.* 35 00 00 00 bi \$0
+ \.\.\.
+
+Disassembly of section \.ovly5:
+
+00000800 <\.ovly5>:
+ \.\.\.
+.* 42 01 00 03 ila \$3,200 .*
+.* 18 00 c0 81 a \$1,\$1,\$3
+.* 34 00 40 80 lqd \$0,16\(\$1\)
+.* 30 01 7d 80 bra bec .*
+ \.\.\.
+ be0: 00 00 00 03.*
+ be4: 00 00 14 00.*
+ be8: a0 00 0b 2c.*
+ bec: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ \.\.\.
+ bfc: 00 03 fd 80.*
+
+Disassembly of section \.ovly6:
+
+00000c00 <\.ovly6>:
+.* 31 01 f5 80 brasl \$0,fac .*
+.* 33 00 79 00 brsl \$0,fcc .*
+ \.\.\.
+.* 32 00 18 80 br fec .*
+ \.\.\.
+ fa0: 00 00 00 07.*
+ fa4: 00 04 14 00.*
+ fa8: a0 00 0c 00.*
+ fac: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ fb0: 00 03 75 80.*
+ \.\.\.
+ fc0: 00 00 00 07.*
+ fc4: 00 04 14 00.*
+ fc8: a0 00 0c 04.*
+ fcc: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ fd0: 00 00 00 00.*
+ fd4: 00 00 86 80.*
+ \.\.\.
+ fe0: 00 00 00 04.*
+ fe4: 00 04 08 00.*
+ fe8: 20 00 0f 28.*
+ fec: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ \.\.\.
+ ff8: 00 7f 03 80.*
+ ffc: 00 00 00 00.*
+
+Disassembly of section \.ovly7:
+
+00001000 <\.ovly7>:
+.* 41 7f ff 83 ilhu \$3,65535 # ffff
+.* 60 f8 30 03 iohl \$3,61536 # f060
+.* 18 00 c0 84 a \$4,\$1,\$3
+.* 00 20 00 00 lnop
+.* 04 00 02 01 ori \$1,\$4,0
+.* 24 00 02 04 stqd \$4,0\(\$4\)
+.* 33 00 72 80 brsl \$0,13ac .*
+.* 33 00 76 00 brsl \$0,13cc .*
+.* 34 00 00 81 lqd \$1,0\(\$1\)
+ \.\.\.
+.* 32 00 15 00 br 13ec .*
+ \.\.\.
+ 13a0: 00 00 00 03.*
+ 13a4: 00 00 14 00.*
+ 13a8: a0 00 10 18.*
+ 13ac: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ \.\.\.
+ 13b8: 00 00 0f 80.*
+ 13bc: 00 00 00 00.*
+ 13c0: 00 00 00 07.*
+ 13c4: 00 04 14 00.*
+ 13c8: a0 00 10 1c.*
+ 13cc: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ \.\.\.
+ 13dc: 00 00 0a 80.*
+ 13e0: 00 00 00 05.*
+ 13e4: 00 04 0c 00.*
+ 13e8: 20 00 13 44.*
+ 13ec: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ 13f0: 00 00 00 00.*
+ 13f4: 00 7f 02 80.*
+ \.\.\.
+
+Disassembly of section \.ovly8:
+
+00001400 <f4>:
+.* 24 00 40 80 stqd \$0,16\(\$1\)
+.* 24 f8 00 81 stqd \$1,-512\(\$1\)
+.* 1c 80 00 81 ai \$1,\$1,-512
+.* 31 02 f9 80 brasl \$0,17cc .*
+ \.\.\.
+.* 32 00 17 80 br 17ec .*
+ \.\.\.
+ 17c0: 00 00 00 02.*
+ 17c4: 00 00 11 04.*
+ 17c8: a0 00 14 0c.*
+ 17cc: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ \.\.\.
+ 17dc: 00 00 d9 00.*
+ 17e0: 00 00 00 06.*
+ 17e4: 00 04 10 00.*
+ 17e8: 20 00 17 30.*
+ 17ec: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ 17f0: 00 7f 0d 80.*
+ \.\.\.
+
+Disassembly of section \.text:
+
+00001800 <_start>:
+.* 41 00 00 03 ilhu \$3,0
+.* 60 8a 00 03 iohl \$3,5120 # 1400
+.* 32 00 04 80 br 182c.*
+ \.\.\.
+ 1820: 00 00 00 01.*
+ 1824: 00 00 0c 00.*
+ 1828: a0 00 18 08.*
+ 182c: 31 03 0a 4b brasl \$75,1850 <__icache_br_handler>
+ \.\.\.
+ 1838: 00 7e 7b 80.*
+ \.\.\.
+
+00001850 <__icache_br_handler>:
+#pass
diff --git a/ld/testsuite/ld-spu/icache1.s b/ld/testsuite/ld-spu/icache1.s
new file mode 100644
index 0000000..a65664c
--- /dev/null
+++ b/ld/testsuite/ld-spu/icache1.s
@@ -0,0 +1,111 @@
+ .text
+ .globl _start
+ .type _start,@function
+_start:
+ ilhu $3,f5@h
+ iohl $3,f5@l
+ br f1
+
+ .data
+ .word f1, f2, f3, f4
+
+ .section ".f1.part1","ax",@progbits
+ .globl f1
+ .type f1,@function
+f1:
+ nop
+ stqd $0,16($1)
+ ai $1,$1,-64
+ stqd $1,0($1)
+ brsl $0,f2
+ brsl $0,f3
+ .fill 800
+ br .Lf1.part2
+ .size f1,.-f1
+
+ .section ".f1.part2","ax",@progbits
+.Lf1.part2:
+ ai $1,$1,64
+ lqd $0,16($1)
+ bi $0
+ .fill 800
+ .size .Lf1.part2,.-.Lf1.part2
+
+ .section ".f2.part1","ax",@progbits
+ .globl f2
+ .type f2,@function
+f2:
+ ai $1,$1,-128
+ stqd $1,0($1)
+ .fill 512
+ ai $1,$1,128
+ bi $0
+ .size f2,.-f2
+
+ .section ".f3.part1","ax",@progbits
+ .type f3,@function
+f3:
+ .fill 256
+ bi $0
+ .size f3,.-f3
+
+ .section ".f4.part1","ax",@progbits
+ .type f4,@function
+f4:
+ stqd $(0),16($1)
+ stqd $1,-512($1)
+ ai $1,$1,-512
+ brasl $0,f2
+ .fill 800
+ br .Lf4.part2
+ .size f4,.-f4
+
+ .section ".f4.part2","ax",@progbits
+.Lf4.part2:
+#alloca
+ ilhu $3,-4000@h
+ iohl $3,-4000@l
+ a $4,$1,$3
+ lnop
+ ori $1,$4,0
+ stqd $4,0($4)
+ brsl $0,f5
+#recursion
+ brsl $0,f4
+ lqd $1,0($1)
+ .fill 800
+ br .Lf4.part3
+ .size .Lf4.part2,.-.Lf4.part2
+
+ .section ".f4.part3","ax",@progbits
+.Lf4.part3:
+#recursion
+ brasl $0,f4
+ brsl $0,f4
+ .fill 800
+ br .Lf4.part4
+ .size .Lf4.part3,.-.Lf4.part3
+
+ .section ".f4.part4","ax",@progbits
+.Lf4.part4:
+ .fill 800
+ ila $3,512
+ a $1,$1,$3
+ lqd $0,16($1)
+#sibling call
+ bra f5
+ .size .Lf4.part4,.-.Lf4.part4
+
+ .section ".f5.part1","ax",@progbits
+ .type f5,@function
+f5:
+ stqd $(0),16($1)
+ stqd $1,-512($1)
+ ai $1,$1,-512
+ brsl $0,f5
+ .fill 800
+ ila $3,512
+ a $1,$1,$3
+ lqd $0,16($1)
+ bi $0
+ .size f5,.-f5