一 : 指令合并概述
指令折叠的意思,原本一个语句会产生多条指令,通过折叠,可以删除一些中间指令,减少指令数量,并且能够减少寄存器占用。提高执行效率。
举一个例子:
MUL A, B, 4 ; A = B * 4MAD D, A, 2, F ; D = A * 2 + F
MAD G, A, 3, I ; G = A * 3 + I
观察上面的指令,拆解后可得到下面的指令:
MAD D, A, 2, F = (B * 4) * 2 + F = B * (4 * 2) + FMAD G, A, 3, I = (B * 4) * 3 + I = B * (4 * 3) + I
也就是说 MUL A的结果可以直接合并到MAD的立即数里面。通过指令折叠后,可以得到下面指令:
MAD D, B, 8, F ; D = B * 8 + F
MAD G, B, 12, I ; G = B * 12 + I
优化前后对比: