From: Sridhar Adagada <asridhars@gmail.com>
To: linux-mips@linux-mips.org
Subject: Optimisation
Date: Thu, 8 Jul 2004 12:08:40 +0530 [thread overview]
Message-ID: <f013fac60407072338b65f8fd@mail.gmail.com> (raw)
Hello everybody,
I am sorry if the mail is too long had to include assembly code, which
i am still learning.
I am trying some optimization on some my code. Listed below is the
c-code of a function which is obvious, but the assembly from compiler
with optimization for speed, is confusing to me can any one explain?
As you can see $6 is the length, my confusion is at the lines 12-14,
19, 20 why is the length added with 65535 and the comparison with 0
for max and the right shift. The same operation is done the base ($7)
can any one explain why this is needed. Can i replace all these
three instructions with "ori $9 $0 $6"
One more thing does the instruction at line 25 "madl $25, $24" do?
Any help with be greatly appresciated
Thanks
Sri
C-code:
short cal_xxx(short *abs, short *coef, short len, short base)
{
short i;
short sum = 0;
for (i = 0; i < length; i++)
{
sum += ( (unsigned int)abs[i] * (unsigned int)coef[i] );
}
return ( ((sum + 1 << (base -1)) >> base) );
}
Assmebly code:
1 .set noat
2 .set noreorder
3 .set nomacro
4 .text
5 .align 4
6 .globl cal_xxx
7 /* short i;
8 short sum = 0; */
9 ori $9, $0, 0
10 ori $3, $0, 0
11 /* for( i = 0; i < length; i++ ) */
12 andi $6, $6, 65535
13 imax $8, $6, 0
14 srl $10, $8, 3
15 beq $10, $0, .L62
16 andi $7, $7, 65535
17 move $2, $5
18 move $11, $4
19 sll $24, $10, 3
20 andi $9, $24, 65528
21 .L78:
22 lh $25, 0($11)
23 lh $24, 0($2)
24 mtlo $3
25 madl $25, $24
26 lh $25, 2($11)
27 lh $24, 2($2)
28 nop
29 madl $25, $24
30 lh $25, 4($11)
31 lh $24, 4($2)
32 nop
33 madl $25, $24
34 lh $25, 6($11)
35 lh $24, 6($2)
36 nop
37 madl $25, $24
38 lh $25, 8($11)
39 lh $24, 8($2)
40 nop
41 madl $25, $24
42 lh $25, 10($11)
43 lh $24, 10($2)
44 nop
45 madl $25, $24
46 lh $25, 12($11)
47 lh $24, 12($2)
48 nop
49 madl $25, $24
50 lh $25, 14($11)
51 lh $24, 14($2)
52 addiu $10, $10, -1
53 madl $25, $24
54 addiu $11, $11, 16
55 addiu $2, $2, 16
56 mflo $3
57 bne $10, $0, .L78
58 nop
59 nop
60 .L62:
61 andi $10, $8, 7
62 beq $10, $0, .L44
63 sll $9, $9, 1
64 addu $2, $5, $9
65 addu $25, $4, $9
66 addiu $10, $10, -1
67 .L1000082:
68 lh $15, 0($2)
69 lh $24, 0($25)
70 mtlo $3
71 madl $24, $15
72 addiu $25, $25, 2
73 addiu $2, $2, 2
74 mflo $3
75 bne $10, $0, .L1000082
76 addiu $10, $10, -1
77 .L44:
78 /* } for-end */
79 addiu $25, $7, -1
80 ori $15, $0, 1
81 sllv $24, $15, $25
82 addu $14, $3, $24
83 srav $13, $14, $7
84 sll $2, $13, 16
85 # .ef
86 jr $ra
87 sra $2, $2, 16
88 .type cal_xxx,@function
89 .size cal_xxx,.-cal_xxx
90 .align 4
91 #i $9 local
92 #sum $3 local
93
94 #abs $4 param
95 #coef $5 param
96 #length $6 param
97 #base $7 param
98
99 .data
100 .L139:
101 .text
102 /* } end-function */
next reply other threads:[~2004-07-08 6:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-08 6:38 Sridhar Adagada [this message]
2004-07-08 8:59 ` Optimisation Geert Uytterhoeven
2004-07-08 9:21 ` Optimisation Sridhar Adagada
2004-07-08 9:48 ` Optimisation Sridhar Adagada
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f013fac60407072338b65f8fd@mail.gmail.com \
--to=asridhars@gmail.com \
--cc=linux-mips@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox