neon汇编代码的乱序优化

本人使用的汇编代码乱序优化工具是:http://pulsar.webshaker.net/ccc/index.php?lng=us

乱序优化之前的代码:

vld1.8		d2,		[r1],r3
vld1.8		d3,		[r6],r3	
vld1.8		d4,		[r1],r3	
vld1.8		d5,		[r6],r3	
vld1.8		d6,		[r1],r3	
vld1.8		d7,		[r6],r3
vmovl.u8	q4,		d2
vmovl.u8	q5,		d3
vmovl.u8	q6,		d4
vmovl.u8	q7,		d5
vmovl.u8	q8,		d6
vmovl.u8	q9,		d7

运行分析结果:

neon汇编代码的乱序优化_第1张图片


	vld1.8		d2,		[r1],r3
	vld1.8		d3,		[r6],r3
	vmovl.u8	q4,		d2
	vld1.8		d4,		[r1],r3
	vmovl.u8	q5,		d3
	vld1.8		d5,		[r6],r3
	vmovl.u8	q6,		d4
	vld1.8		d6,		[r1],r3
	vmovl.u8	q7,		d5
	vld1.8		d7,		[r6],r3
	vmovl.u8	q8,		d6
	vmovl.u8	q9,		d7

neon汇编代码的乱序优化_第2张图片


从上面的分析结果可以发现使用乱序优化可以将指令pipeline。这样可以减少指令因为前后之间的等待时延,更加有效地利用处理器的cycle。


在实际使用过程中,发现编译器也可以实现汇编语言的乱序优化。经过本人的编程实践,通常编译器使用-O2优化等级的时候跟自己手动乱序优化后的 -O的效果差不多。不过乱序的思想还是值得学习和理解的~


你可能感兴趣的:(NEON)