ループ最適化
L11で始まるブロックはループの中にあるブロックです。
以下の情報をループの外で設定することで高速化が可能です。
1. 161行目にあるdestのようなシンボルのアドレス
2. 140,142,148,150 にある chd 等で取り出す、レジスタのバイト位置情報。(sp はこのブロック内で更新されません)
132 .L18:
133 brz $23,.L6
134 il $30,0
135 hbra .L17,.L11
136 il $29,0
137 nop $127
138 .L11:
139 ai $28,$sp,32
140 lqd $24,64($sp)
141 ai $4,$29,32
142 chd $25,0($sp)
143 a $7,$29,$28
144 chd $20,2($sp)
145 ai $10,$29,14
146 lqx $22,$4,$sp
147 ai $9,$7,6
148 chd $26,4($sp)
149 ai $8,$7,4
150 chd $28,6($sp)
151 ai $16,$9,14
152 lqd $27,0($9)
153 ai $4,$7,2
154 ai $18,$8,14
155 ai $17,$4,14
156 rotqby $13,$22,$10
157 a $11,$30,$30
158 ori $21,$17,0
159 ori $22,$18,0
160 rotqby $14,$27,$16
161 ila $23,dest
162 lqx $12,$11,$31
:
222 .L17:
223 brz $16,.L11
224 ai $sp,$sp,352
0 件のコメント:
コメントを投稿