From 240991557c2ca704fc2bd21373fab23da69716e0 Mon Sep 17 00:00:00 2001 From: David Monniaux Date: Sat, 6 Apr 2019 09:50:22 +0200 Subject: hand optimizations --- .../binary_search.ccomp.k1c.s.optimized01 | 204 +++++++++++++++++++++ .../binary_search.ccomp.k1c.s.optimized02 | 203 ++++++++++++++++++++ 2 files changed, 407 insertions(+) create mode 100644 test/monniaux/binary_search/binary_search.ccomp.k1c.s.optimized01 create mode 100644 test/monniaux/binary_search/binary_search.ccomp.k1c.s.optimized02 (limited to 'test/monniaux/binary_search') 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 -- cgit