From 0934d70a0c10185400e435dc8337525f31e85d0d Mon Sep 17 00:00:00 2001 From: David Monniaux Date: Thu, 31 Jan 2019 09:33:14 +0100 Subject: hand optimized --- test/monniaux/heapsort/heapsort.ccomp.k1c.s.orig | 358 +++++++++++++++++++++++ 1 file changed, 358 insertions(+) create mode 100644 test/monniaux/heapsort/heapsort.ccomp.k1c.s.orig (limited to 'test/monniaux/heapsort/heapsort.ccomp.k1c.s.orig') diff --git a/test/monniaux/heapsort/heapsort.ccomp.k1c.s.orig b/test/monniaux/heapsort/heapsort.ccomp.k1c.s.orig new file mode 100644 index 00000000..3dc370b8 --- /dev/null +++ b/test/monniaux/heapsort/heapsort.ccomp.k1c.s.orig @@ -0,0 +1,358 @@ +# File generated by CompCert 3.4 +# Command line: -Wall -O3 -S heapsort.c -o heapsort.ccomp.k1c.s + .text + .balign 2 +downheap: + addd $r14 = $r12, 0 + addd $r12 = $r12, -16 +;; + sd 0[$r12] = $r14 +;; +;; + get $r16 = $ra +;; + sd 8[$r12] = $r16 +;; +.L100: + sllw $r3 = $r2, 1 + addd $r4 = $r2, 0 +;; + addw $r5 = $r3, 1 + addw $r3 = $r3, 2 +;; + compw.ge $r32 = $r5, $r1 +;; + cb.wnez $r32?.L101 +;; + sxwd $r11 = $r5 + sxwd $r43 = $r4 +;; + slld $r38 = $r11, 3 + slld $r37 = $r43, 3 +;; + addd $r8 = $r0, $r38 + addd $r40 = $r0, $r37 +;; + ld $r7 = 0[$r8] +;; + ld $r35 = 0[$r40] +;; + compd.leu $r32 = $r7, $r35 +;; + cb.wnez $r32?.L101 +;; + addd $r4 = $r5, 0 +;; +.L101: + compw.ge $r32 = $r3, $r1 +;; + cb.wnez $r32?.L102 +;; + sxwd $r10 = $r3 + sxwd $r34 = $r4 +;; + slld $r17 = $r10, 3 + slld $r9 = $r34, 3 +;; + addd $r36 = $r0, $r17 + addd $r47 = $r0, $r9 +;; + ld $r45 = 0[$r36] +;; + ld $r44 = 0[$r47] +;; + compd.leu $r32 = $r45, $r44 +;; + cb.wnez $r32?.L102 +;; + addd $r4 = $r3, 0 +;; +.L102: + compw.eq $r32 = $r4, $r2 +;; + cb.wnez $r32?.L103 +;; + sxwd $r46 = $r2 + sxwd $r6 = $r4 + addd $r2 = $r4, 0 +;; + slld $r41 = $r46, 3 + slld $r39 = $r6, 3 +;; + addd $r5 = $r0, $r41 + addd $r3 = $r0, $r39 +;; + ld $r33 = 0[$r3] +;; + ld $r42 = 0[$r5] +;; + sd 0[$r5] = $r33 +;; + sd 0[$r3] = $r42 + goto .L100 +;; +.L103: +;; + ld $r16 = 8[$r12] +;; + set $ra = $r16 +;; + addd $r12 = $r12, 16 +;; + ret +;; + .type downheap, @function + .size downheap, . - downheap + .text + .balign 2 + .globl heapsort +heapsort: + addd $r14 = $r12, 0 + addd $r12 = $r12, -48 +;; + sd 0[$r12] = $r14 +;; +;; + get $r16 = $ra +;; + sd 8[$r12] = $r16 +;; + sd 16[$r12] = $r18 +;; + sd 24[$r12] = $r19 + addd $r19 = $r1, 0 +;; + addw $r6 = $r19, 4294967294 +;; + sraw $r32 = $r6, 31 +;; + sd 32[$r12] = $r20 + addd $r20 = $r0, 0 + srlw $r32 = $r32, 31 +;; + addw $r32 = $r6, $r32 +;; + sraw $r18 = $r32, 1 +;; +.L104: + cb.wltz $r18?.L105 +;; + addd $r2 = $r18, 0 + addd $r1 = $r19, 0 + addd $r0 = $r20, 0 + call downheap +;; + addw $r18 = $r18, 4294967295 + goto .L104 +;; +.L105: + make $r18, 0 +;; +.L106: + compw.ge $r32 = $r18, $r19 +;; + cb.wnez $r32?.L107 +;; + sbfw $r3 = $r18, $r19 + ld $r4 = 0[$r20] +;; + addw $r1 = $r3, 4294967295 +;; + sxwd $r7 = $r1 +;; + slld $r2 = $r7, 3 +;; + addd $r0 = $r20, $r2 + make $r2, 0 +;; + ld $r9 = 0[$r0] +;; + sd 0[$r0] = $r4 + addd $r0 = $r20, 0 +;; + sd 0[$r20] = $r9 + call downheap +;; + addw $r18 = $r18, 1 + goto .L106 +;; +.L107: + ld $r16 = 8[$r12] +;; + ld $r18 = 16[$r12] +;; + ld $r19 = 24[$r12] +;; + ld $r20 = 32[$r12] + set $ra = $r16 +;; + addd $r12 = $r12, 48 +;; + ret +;; + .type heapsort, @function + .size heapsort, . - heapsort + .data + .balign 8 +next: + .long 0x4f091c37, 0x0 + .type next, @object + .size next, . - next + .text + .balign 2 + .globl data_random +data_random: + addd $r14 = $r12, 0 + addd $r12 = $r12, -16 +;; + sd 0[$r12] = $r14 +;; +;; + get $r16 = $ra +;; + sd 8[$r12] = $r16 +;; + make $r32 = next + make $r0, 1103515249 +;; + ld $r1 = 0[$r32] + make $r32 = next +;; + muld $r63 = $r1, $r0 +;; + addd $r0 = $r63, 12345 +;; + sd 0[$r32] = $r0 +;; + ld $r16 = 8[$r12] +;; + set $ra = $r16 +;; + addd $r12 = $r12, 16 +;; + ret +;; + .type data_random, @function + .size data_random, . - data_random + .text + .balign 2 + .globl data_vec_random +data_vec_random: + addd $r14 = $r12, 0 + addd $r12 = $r12, -48 +;; + sd 0[$r12] = $r14 +;; +;; + get $r16 = $ra +;; + sd 8[$r12] = $r16 +;; + sd 16[$r12] = $r18 + addd $r18 = $r1, 0 +;; + sd 24[$r12] = $r19 + addd $r19 = $r0, 0 +;; + sd 32[$r12] = $r20 + make $r20, 0 +;; +.L108: + compw.geu $r32 = $r20, $r18 +;; + cb.wnez $r32?.L109 +;; + call data_random +;; + addd $r1 = $r20, 0 + addw $r20 = $r20, 1 +;; + zxwd $r1 = $r1 +;; + slld $r2 = $r1, 3 +;; + addd $r3 = $r19, $r2 +;; + sd 0[$r3] = $r0 + goto .L108 +;; +.L109: + ld $r16 = 8[$r12] +;; + ld $r18 = 16[$r12] +;; + ld $r19 = 24[$r12] +;; + ld $r20 = 32[$r12] + set $ra = $r16 +;; + addd $r12 = $r12, 48 +;; + ret +;; + .type data_vec_random, @function + .size data_vec_random, . - data_vec_random + .text + .balign 2 + .globl data_vec_is_sorted +data_vec_is_sorted: + addd $r14 = $r12, 0 + addd $r12 = $r12, -16 +;; + sd 0[$r12] = $r14 +;; +;; + get $r16 = $ra +;; + sd 8[$r12] = $r16 +;; + make $r2, 0 +;; +.L110: + addw $r6 = $r1, 4294967295 +;; + compw.geu $r32 = $r2, $r6 +;; + cb.wnez $r32?.L111 +;; + addd $r3 = $r2, 0 + addw $r2 = $r2, 1 +;; + zxwd $r3 = $r3 +;; + slld $r5 = $r3, 3 + addd $r3 = $r2, 0 +;; + addd $r10 = $r0, $r5 + zxwd $r3 = $r3 +;; + slld $r8 = $r3, 3 +;; + addd $r3 = $r0, $r8 +;; + ld $r4 = 0[$r10] +;; + ld $r9 = 0[$r3] +;; + compd.leu $r32 = $r4, $r9 +;; + cb.wnez $r32?.L110 +;; + make $r0, 0 + goto .L112 +;; +.L111: + make $r0, 1 +;; +.L112: +;; + ld $r16 = 8[$r12] +;; + set $ra = $r16 +;; + addd $r12 = $r12, 16 +;; + ret +;; + .type data_vec_is_sorted, @function + .size data_vec_is_sorted, . - data_vec_is_sorted -- cgit