aboutsummaryrefslogtreecommitdiffstats
path: root/test/monniaux/binary_search
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-06 09:50:22 +0200
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-04-06 09:50:22 +0200
commit240991557c2ca704fc2bd21373fab23da69716e0 (patch)
tree6114f19904c5097d59eb16ea00a12d8815fd97ee /test/monniaux/binary_search
parent1e6ab01a46c89dfb2d79303f69d8716cd4a5a903 (diff)
downloadcompcert-kvx-240991557c2ca704fc2bd21373fab23da69716e0.tar.gz
compcert-kvx-240991557c2ca704fc2bd21373fab23da69716e0.zip
hand optimizations
Diffstat (limited to 'test/monniaux/binary_search')
-rw-r--r--test/monniaux/binary_search/binary_search.ccomp.k1c.s.optimized01204
-rw-r--r--test/monniaux/binary_search/binary_search.ccomp.k1c.s.optimized02203
2 files changed, 407 insertions, 0 deletions
diff --git a/test/monniaux/binary_search/binary_search.ccomp.k1c.s.optimized01 b/test/monniaux/binary_search/binary_search.ccomp.k1c.s.optimized01
new file mode 100644
index 00000000..7d9df872
--- /dev/null
+++ b/test/monniaux/binary_search/binary_search.ccomp.k1c.s.optimized01
@@ -0,0 +1,204 @@
+# File generated by CompCert 3.5
+# Command line: -O3 -Wall -Wno-c11-extensions -fno-unprototyped -S binary_search.c -o binary_search.ccomp.k1c.s
+ .section .rodata
+ .balign 1
+__stringlit_1:
+ .ascii "position: %d\012random fill cycles: %lu\012search cycles: %lu\012\000"
+ .type __stringlit_1, @object
+ .size __stringlit_1, . - __stringlit_1
+ .text
+ .balign 2
+ .globl my_bsearch
+my_bsearch:
+ addd $r17 = $r12, 0
+ addd $r12 = $r12, -16
+;;
+ sd 0[$r12] = $r17
+;;
+;;
+ get $r16 = $ra
+;;
+ sd 8[$r12] = $r16
+;;
+ make $r4, 0
+ addw $r6 = $r1, -1
+;;
+.L100:
+ addw $r5 = $r4, $r6
+;;
+ srlw $r3 = $r5, 1
+;;
+ zxwd $r5 = $r3
+;;
+ slld $r8 = $r5, 2
+;;
+ lws $r1 = $r8[$r0]
+;;
+ compw.eq $r32 = $r1, $r2
+;;
+ cb.wnez $r32? .L101
+;;
+ compw.lt $r32 = $r1, $r2
+;;
+ cb.wnez $r32? .L102
+;;
+ addw $r6 = $r3, -1
+ goto .L103
+;;
+.L102:
+ addw $r4 = $r3, 1
+;;
+.L103:
+ compw.leu $r32 = $r4, $r6
+;;
+ cb.wnez $r32? .L100
+;;
+ make $r0, -1
+ goto .L104
+;;
+.L101:
+ addd $r0 = $r3, 0
+;;
+.L104:
+ ld $r16 = 8[$r12]
+;;
+ set $ra = $r16
+;;
+ addd $r12 = $r12, 16
+;;
+ ret
+;;
+ .type my_bsearch, @function
+ .size my_bsearch, . - my_bsearch
+ .text
+ .balign 2
+ .globl random_ascending_fill
+random_ascending_fill:
+ addd $r17 = $r12, 0
+ addd $r12 = $r12, -16
+;;
+ sd 0[$r12] = $r17
+;;
+;;
+ get $r16 = $ra
+;;
+ sd 8[$r12] = $r16
+;;
+ make $r7, 41
+ make $r8, 0
+ make $r6, 0
+;;
+.L105:
+ compw.geu $r32 = $r6, $r1
+;;
+ cb.wnez $r32? .L106
+;;
+ zxwd $r2 = $r6
+ andw $r3 = $r7, 1073741824
+;;
+ slld $r4 = $r2, 2
+;;
+ sw $r4[$r0] = $r8
+ addw $r8 = $r8, 1
+ cb.weqz $r3? .L107
+;;
+ addw $r8 = $r8, 1
+;;
+.L107:
+ mulw $r2 = $r7, 97
+ addw $r6 = $r6, 1
+;;
+ addw $r7 = $r2, 5
+ goto .L105
+;;
+.L106:
+ ld $r16 = 8[$r12]
+;;
+ set $ra = $r16
+;;
+ addd $r12 = $r12, 16
+;;
+ ret
+;;
+ .type random_ascending_fill, @function
+ .size random_ascending_fill, . - random_ascending_fill
+ .text
+ .balign 2
+ .globl main
+main:
+ addd $r17 = $r12, 0
+ addd $r12 = $r12, -64
+;;
+ sd 0[$r12] = $r17
+;;
+;;
+ get $r16 = $ra
+;;
+ sd 8[$r12] = $r16
+;;
+ sd 16[$r12] = $r18
+ make $r0, 20000
+;;
+ sd 24[$r12] = $r19
+;;
+ sd 32[$r12] = $r20
+;;
+ sd 40[$r12] = $r21
+;;
+ sd 48[$r12] = $r22
+ make $r22, 5000
+ call malloc
+;;
+ addd $r21 = $r0, 0
+ call get_current_cycle
+;;
+ addd $r18 = $r0, 0
+ addd $r1 = $r22, 0
+ addd $r0 = $r21, 0
+ call random_ascending_fill
+;;
+ call get_current_cycle
+;;
+ sbfd $r19 = $r18, $r0
+ call get_current_cycle
+;;
+ addd $r20 = $r0, 0
+ make $r2, 1502
+ addd $r1 = $r22, 0
+ addd $r0 = $r21, 0
+ call my_bsearch
+;;
+ addd $r18 = $r0, 0
+ call get_current_cycle
+;;
+ sbfd $r3 = $r20, $r0
+ make $r0 = __stringlit_1
+ addd $r2 = $r19, 0
+ addd $r1 = $r18, 0
+ call printf
+;;
+ addd $r0 = $r21, 0
+ call free
+;;
+ make $r0, 0
+;;
+ ld $r18 = 16[$r12]
+;;
+ ld $r19 = 24[$r12]
+;;
+ ld $r20 = 32[$r12]
+;;
+ ld $r21 = 40[$r12]
+;;
+ ld $r22 = 48[$r12]
+;;
+ ld $r16 = 8[$r12]
+;;
+ set $ra = $r16
+;;
+ addd $r12 = $r12, 64
+;;
+ ret
+;;
+ .type main, @function
+ .size main, . - main
diff --git a/test/monniaux/binary_search/binary_search.ccomp.k1c.s.optimized02 b/test/monniaux/binary_search/binary_search.ccomp.k1c.s.optimized02
new file mode 100644
index 00000000..b148e33f
--- /dev/null
+++ b/test/monniaux/binary_search/binary_search.ccomp.k1c.s.optimized02
@@ -0,0 +1,203 @@
+# File generated by CompCert 3.5
+# Command line: -O3 -Wall -Wno-c11-extensions -fno-unprototyped -S binary_search.c -o binary_search.ccomp.k1c.s
+ .section .rodata
+ .balign 1
+__stringlit_1:
+ .ascii "position: %d\012random fill cycles: %lu\012search cycles: %lu\012\000"
+ .type __stringlit_1, @object
+ .size __stringlit_1, . - __stringlit_1
+ .text
+ .balign 2
+ .globl my_bsearch
+my_bsearch:
+ addd $r17 = $r12, 0
+ addd $r12 = $r12, -16
+;;
+ sd 0[$r12] = $r17
+;;
+;;
+ get $r16 = $ra
+;;
+ sd 8[$r12] = $r16
+;;
+ make $r4, 0
+ addw $r6 = $r1, -1
+;;
+.L100:
+ addw $r5 = $r4, $r6
+;;
+ srlw $r3 = $r5, 1
+;;
+ zxwd $r5 = $r3
+;;
+ slld $r8 = $r5, 2
+;;
+ lws $r1 = $r8[$r0]
+;;
+ compw.eq $r32 = $r1, $r2
+ compw.lt $r33 = $r1, $r2
+;;
+ cb.wnez $r32? .L101
+;;
+ cb.wnez $r33? .L102
+;;
+ addw $r6 = $r3, -1
+ goto .L103
+;;
+.L102:
+ addw $r4 = $r3, 1
+;;
+.L103:
+ compw.leu $r32 = $r4, $r6
+;;
+ cb.wnez $r32? .L100
+;;
+ make $r0, -1
+ goto .L104
+;;
+.L101:
+ addd $r0 = $r3, 0
+;;
+.L104:
+ ld $r16 = 8[$r12]
+;;
+ set $ra = $r16
+;;
+ addd $r12 = $r12, 16
+;;
+ ret
+;;
+ .type my_bsearch, @function
+ .size my_bsearch, . - my_bsearch
+ .text
+ .balign 2
+ .globl random_ascending_fill
+random_ascending_fill:
+ addd $r17 = $r12, 0
+ addd $r12 = $r12, -16
+;;
+ sd 0[$r12] = $r17
+;;
+;;
+ get $r16 = $ra
+;;
+ sd 8[$r12] = $r16
+;;
+ make $r7, 41
+ make $r8, 0
+ make $r6, 0
+;;
+.L105:
+ compw.geu $r32 = $r6, $r1
+;;
+ cb.wnez $r32? .L106
+;;
+ zxwd $r2 = $r6
+ andw $r3 = $r7, 1073741824
+;;
+ slld $r4 = $r2, 2
+;;
+ sw $r4[$r0] = $r8
+ addw $r8 = $r8, 1
+ cb.weqz $r3? .L107
+;;
+ addw $r8 = $r8, 1
+;;
+.L107:
+ mulw $r2 = $r7, 97
+ addw $r6 = $r6, 1
+;;
+ addw $r7 = $r2, 5
+ goto .L105
+;;
+.L106:
+ ld $r16 = 8[$r12]
+;;
+ set $ra = $r16
+;;
+ addd $r12 = $r12, 16
+;;
+ ret
+;;
+ .type random_ascending_fill, @function
+ .size random_ascending_fill, . - random_ascending_fill
+ .text
+ .balign 2
+ .globl main
+main:
+ addd $r17 = $r12, 0
+ addd $r12 = $r12, -64
+;;
+ sd 0[$r12] = $r17
+;;
+;;
+ get $r16 = $ra
+;;
+ sd 8[$r12] = $r16
+;;
+ sd 16[$r12] = $r18
+ make $r0, 20000
+;;
+ sd 24[$r12] = $r19
+;;
+ sd 32[$r12] = $r20
+;;
+ sd 40[$r12] = $r21
+;;
+ sd 48[$r12] = $r22
+ make $r22, 5000
+ call malloc
+;;
+ addd $r21 = $r0, 0
+ call get_current_cycle
+;;
+ addd $r18 = $r0, 0
+ addd $r1 = $r22, 0
+ addd $r0 = $r21, 0
+ call random_ascending_fill
+;;
+ call get_current_cycle
+;;
+ sbfd $r19 = $r18, $r0
+ call get_current_cycle
+;;
+ addd $r20 = $r0, 0
+ make $r2, 1502
+ addd $r1 = $r22, 0
+ addd $r0 = $r21, 0
+ call my_bsearch
+;;
+ addd $r18 = $r0, 0
+ call get_current_cycle
+;;
+ sbfd $r3 = $r20, $r0
+ make $r0 = __stringlit_1
+ addd $r2 = $r19, 0
+ addd $r1 = $r18, 0
+ call printf
+;;
+ addd $r0 = $r21, 0
+ call free
+;;
+ make $r0, 0
+;;
+ ld $r18 = 16[$r12]
+;;
+ ld $r19 = 24[$r12]
+;;
+ ld $r20 = 32[$r12]
+;;
+ ld $r21 = 40[$r12]
+;;
+ ld $r22 = 48[$r12]
+;;
+ ld $r16 = 8[$r12]
+;;
+ set $ra = $r16
+;;
+ addd $r12 = $r12, 64
+;;
+ ret
+;;
+ .type main, @function
+ .size main, . - main