<div dir="ltr"><div><div>Hi all,</div><div><br></div><div>Partial unrolling and runtime unrolling are enabled by default in aarch64 gcc which is help to get performance better. But these two methods are enabled for only several backends in LLVM which are X86, PowerPC and R600. I don't know the history of these two kinds of unrolling, and why they are not widely used. I also want to know is, for aarch64 backend, is it intentionally to get them disabled? </div>

<div><br></div>I've did some experiment around this and see the performance is indeed impacted. Overall, partial unrolling can bring small benefit on most cases of Benchmark and regression is major and small. Runtime unrolling can bring huge improvement on some certain cases but also huge regression on others. The proportion <font color="#323232" face="Arial, 宋体, 微软雅黑"><span style="font-size:14px;line-height:16px;white-space:nowrap">of improvement and regression </span></font><font color="#323232" face="Arial, 宋体, 微软雅黑"><span style="line-height:16px;white-space:nowrap">varies in different Benchmark</span></font><font color="#323232" face="Arial, 宋体, 微软雅黑"><span style="font-size:14px;line-height:16px;white-space:nowrap">. Also, code size is increased for two both.</span></font><div>

<br></div><div>I will show more information before this be changed. Here I just want to know more backgrounds of two unrolling methods.</div><div><div><br></div>-- <br><div dir="ltr">Best Regards,<div><br></div><div>Kevin Qin</div>

</div></div></div><div>
</div></div>