我继承了一些高度优化(SSE4)但未注释的c代码。是否有任何工具或实用程序可以将SSE内在函数转换为更易读的代码或伪代码?这主要是为了提高可读性,以便在深入挖掘和进行更改之前更好地理解代码。
答案 0 :(得分:2)
我不知道任何这样的工具。
但无论如何,它很可能无济于事。如果SSE代码被很好地优化,那么困难部分可能不会解码内在函数。困难的部分是遵循所有技巧来改善局部性并消除迭代内数据依赖性(剥离,多面体循环转换等)。
我可以给你一个建议,但是:总是以最简单的方式编写一个评论相同的例程的标注版本。这个“参考代码”应该只关心可读性和正确性,而不是速度......所以它应该有很多断言。还有一个可以运行标量版本和优化变体的测试套件。
无论是第一次实现例程,还是更新现有例程,总是从参考代码和测试套件开始。不一定按顺序。
这种方法预先更昂贵,但从长远来看要便宜得多。