benchmark x86 flags 基准x86标记Saverestore
基准x86标志保存/恢复
作者:JF巴斯蒂安
背景:LLVM对x86标志的处理不是很高效,目前使用PUSHF和POPF来保存和恢复EFLAGS中的所有用户模式标志。更优化的方法是结合使用LAHF和SAHF(用于CF、PF、AF、ZF、SF)以及SETO和ADDB(用于OF)。此外,建议将EFLAGS中的每个标志视为子寄存器,仅在特定标志有效时使用对应的SETcc指令,例如,当只有ZF有效时,可以使用SETO和TEST指令。
验证器出于安全原因,不允许使用PUSHF和POPF指令。这种方法的改进可能会使LLVM更加高效。基准测试评估LLVM应采用的最佳方法。
测试结果:在2.9GHz的Intel Haswell E5-2690 CPU上的结果显示,每次调用的运行时间为毫秒级别。
用户评论